使用JPA持久化JavaFX-ObservableList

时间:2015-11-12 13:54:43

标签: java jpa javafx eclipselink derby

我正在尝试使用带有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的实现。但它似乎无法奏效。有谁知道如何解决这个问题?

提前致谢! :)

0 个答案:

没有答案