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を使用しています。
コメント