我正在尝试使用带有derby的eclipselink API 2.6版来保存带有JPA的ObservableList。 JPA需要POJO持续存在。对于JavaFX-Properties,我可以使用:
@Transient // avoid persisting
private StringProperty street = new SimpleStringProperty();
@Access(AccessType.PROPERTY) //
public String getStreet() {
return street.get();
}
public void setStreet(final String newStreet) {
street.set(newStreet);
}
工作正常! 嗯,第一个猜测是以相同的方式对ObservableList使用它。我的第一次尝试是使用普通的List:
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Address> adrList;
public List<Address> getAdrList() {
return adrList;
}
public void setAdrList(final List<Address> adrList) {
this.adrList = adrList;
}
效果很好!让我们将List更改为ObservableList。根据StringProperty,我会使用这样的东西:
private ObservableList<Address> adrList;
@Access(AccessType.PROPERTY)
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public List<Address> getAdrList() {
return adrList;
}
public void setAdrList(final List<Address> adrList) {
this.adrList.setAll(adrList);
}
这一直有效,直到我访问adrList。我得到一个NullPointerException,因为adrList是Null。 我的问题是:如何在JPA中使用我的ObervableList?我以为我可以将ObservableList转换为List,只要它只是List的实现。但它似乎无法奏效。有谁知道如何解决这个问题?
提前致谢! :)