如何在ebean实体中保存HashSet?

时间:2012-05-10 12:10:44

标签: jpa playframework-2.0 jpa-2.0 ebean

我想在实体中添加一个额外的集合。但是Ebean似乎没有处理它,并且当我阅读它时总是给我null。

@Entity
public class MyData extends Model {
    @ElementCollection
    public Set<String> extra = new HashSet<String>();
}

1 个答案:

答案 0 :(得分:1)

Ebean仅支持JPA 1.0并添加了一些模式注释,如@PrivateOwned。很遗憾@ElementCollection尚不支持(Ebean 2.8.x),此问题有一张票http://www.avaje.org/bugdetail-378.html

今天你唯一可以做的就是创建一个String实体表(一个带有字符串字段和ID的实体),或者如果集合不是太大,你自己将字符串展平为一个字符串。

public String extra;

public Set<String> getExtra() {
    // Split the string along the semicolons and create the set from the resulting array
    return new HashSet<String>(Arrays.asList(extra.split(";")));
}

public void setExtra(Set<String> extra) {
    // Join the strings into a semicolon separated string
    this.extra = Joiner.on(";").join(extra);
}