我有一个Embaddable
类List<String>
,除非我修改另一个字段,否则修改不会保存。请看一下以理解:
@Embeddable
public class EmbeddableClass {
private Integer someField;
@Basic
private List<String> someList;
public EmbeddableClass() {}
public Integer getSomeField() {
return someField;
}
public void setSomeField(Integer someField) {
this.someField = someField;
}
public List<String> getSomeList() {
return someList;
}
public void setSomeList(List<String> someList) {
this.someList = someList;
}
}
如果我不修改Integer someField
,则someList
上的任何修改都不会被保留。
这是我用来测试的代码:
// ... lookup entity user...
log.severe("some list size before changing: " + user.getMainTeam().getEc().getSomeList().size());
//user.getMainTeam().getEc().setSomeField(new Random().nextInt()); // <- PROBLEM HERE!
user.getMainTeam().getEc().getSomeList().add("darn");
// ... persist entity user...
需要setSomeField
的那一行,否则第二次为给定用户运行测试时,“更改前的大小”将为0
。
最后,这就是Embeddable类在其所有者(类Team
)中的定义方式:
@Embedded
private EmbeddableClass ec;
public EmbeddableClass getEc() {
return ec;
}
public void setEc(EmbeddableClass ec) {
this.ec = ec;
}
我正在使用GAE SDK 1.7.0。