如何在EclipseLink中刷新已获取的属性

时间:2016-12-07 13:02:09

标签: java jpa caching orm eclipselink

我在我们正在开发的项目中使用EclipseLink作为ORM,我想知道如何刷新已经从数据库中提取并在用户界面层中使用的数据。假设我有一个对象“a”,它持有对象列表“b”的引用。

public class A implements java.io.Serializable {
    @OrderBy("id ASC")
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "a", targetEntity = B.class)
    private List<B> bs = new ArrayList<B>();

    // getter and setters
    public List<B> getBs() {
        return bs;
    }

    public void setBs(List<B> bs) {
        this.bs = bs;
    }
}

当我使用a.getBs();这是我的用户界面层中的第一次。它从数据库中获取所有“b”对象并且一切正常。但是当我坚持另一个“b”对象时,它是“a”对象的子对象并再次调用a.getBs();我得到了b对象的旧列表。

有一种配置EclipseLink的方法,每次(或在特定时间)我调用a.getBs();我得到更新的(当前)列表oj b对象。总的来说,我希望EclipseLink每当我需要这个列表时就去询问数据库,或者我应该这样说。

提前致谢。 再见

编辑:我的B类定义是这样的:

public class IstekGorev implements java.io.Serializable {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "A", nullable = false)
    private A a;

    // getter and setters
    public IstekTalep getTalep() {
        return talep;
    }

    public void setTalep(IstekTalep talep) {
        this.talep = talep;
    }
}

在用户界面中,我正在做这样的事情:

List<B> bList = a.getBs();
// show bList in a table
// persist another "b" object which is a child of "a"
// in order to show the user the updated list of "b" objects get "bList" again
List<B> bUpdatedList = a.getBs();

在上述情况下,我总是得到旧列表,这意味着“bList”和“bUpdatedList”之间没有区别。当我调用“a.getBs();”时,如何向EclispeLink说它应该再次询问数据库?第二次。

0 个答案:

没有答案