Ebeanでモデル以外の値を複数保持するフィールドを定義する

cyrus07424cyrus07424

Ebeanでモデルを作成する際、あるモデルのフィールドとして子モデルのデータを複数保持したい場合は@OneToMany@ManyToManyアノテーションを使用して関係を作成するが、子モデルではなくString型やenum値等を単純に複数保持したい場合は、@ElementCollectionアノテーションを使用すれば良い。

import javax.persistence.*;

@Entity
public class User extends Model {
    @Id
    public Long id;

    @ElementCollection
    public Set<String> texts;

    // Listも可能
    @ElementCollection
    public List<Integer> numbers;

    // 自前Enum
    @ElementCollection
    public Set<MyEnum> myEnums;
}

こうすると、@ManyToManyアノテーションを使用した場合と同様に、自動的にUserクラスのテーブルと紐づく値の複数保持用テーブルが作成される。

参考