0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Spring Data MongoDB】Document用のクラスにenumのプロパティを設定してみる

Last updated at Posted at 2024-09-09

概要

Spring Data MongoDBでは、MongoDBでデータアクセスのドキュメントで紹介されている通り、Documentの保存・取得用にPOJOのクラスを使用してRepositoryを通してDBの操作が行えます。ではこのクラスにenumのプロパティを設定した場合、どういう動作になるかというメモ書きです。

前提

  • 今回使用したSpring Boot Starter Data MongoDBのバージョンは3.3.3です。

動作確認用のクラス(Java)

以下のようにenumのプロパティを設定したクラスを、Repository経由で保存・取得した場合の動作を確認しました。

UrlDocument.java
@Document(collection = "url")
public record UrlDocument(
        @Field("url_id")
        String urlId,
        String url,
        @Field("url_type")
        UrlTypeEnum urlType, // enumのプロパティ
) {
}
UrlTypeEnum.java
public enum UrlTypeEnum {
    X,
    Instagram,
    Threads,
    Web
}

確認した結果

結果としてenumの値が文字列としてDBに保存され、取得する際もenumの値に変換されました。
spring-boot-starter-data-mongodb Map enum to String in the entityのstackoverflowでの回答にある通り、enumから文字列の変換はSpring Data MongoDBはよしなにやってくれるようです。今回は試してないですが、enumに数値の値を別途持たせたい場合はMongoDb - Spring Boot - Enum Typeのstackoverflowでの回答にある通り、@Field(targetType = FieldType.INT32)のアノテーションを付与すれば動くそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?