Ebeanでモデル以外の値を複数保持するフィールドを定義する
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
クラスのテーブルと紐づく値の複数保持用テーブルが作成される。
参考(https://stackoverflow.com/questions/27840090/saving-a-list-of-enums-in-an-ebean-and-a-form)