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)