MongoDB に morphia を使用してアクセスするコードを書いていて、
Compound で Unique な Index を作成しようとしたら、
Index アノテーションの変数が非推奨になっていて、
非推奨マークが出ないように記述するのに、少しばかり調べた結果、
以下のような感じになりました。というメモ書きです。
Entity クラスのコード
package xyz.monotalk.models.mongo.entity;
import lombok.Data;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Field;
import org.mongodb.morphia.annotations.Id;
import org.mongodb.morphia.annotations.Index;
import org.mongodb.morphia.annotations.IndexOptions;
import org.mongodb.morphia.annotations.Indexes;
/**
* @author Kem
*/
@Data
@Entity
@Indexes({
@Index(options = @IndexOptions(name = "natualPrimaryKeys", unique = true), fields = {
@Field("festivalId"),
@Field("artistTagId"),
@Field("artistName")})
})
public class SearchTargetArtist {
@Id
private ObjectId id;
private Integer festivalId;
private Integer artistTagId;
private String artistName;
}
説明
- Index アノテーションの変数 options に IndexOptions アノテーションを指定
- IndexOptions アノテーションの変数 unique には true を指定
- Index アノテーションの変数 fields に複合インデックスにするカラムを Field アノテーションで指定する
これで、アノテーションの記述は OK で、
あとは、コード上のどこかで、
Datastore#ensureIndexes(SearchTargetArtist.class);
補足
morphia の version は v1.0.0を使用しています。
コメント