Java EE实体不获取更新的数据库数据

时间:2010-11-30 01:15:01

标签: java-ee javabeans

我正在使用Java2EE构建一个应用程序,我有几个实体,包括这两个:

实体产品(代码段):

@Entity
public class Product implements Serializable {
    @ManyToMany(mappedBy = "products")
    private List<KB> kbs;

    public List<KB> getKbs() {
        return kbs;
    }
}

实体KB( K nowledge B ase文章)(摘录):

@Entity
public class KB implements Serializable {
    @ManyToMany
    private List<Product> products;
}

你能说出来,它们是双向相关的,所以JPA创建了三个表:Product,KB和KB_Product。

我还有EJB和Managed Beans来访问这个实体持久化的数据,这里是我用来检索特定产品的相关KB列表的代码片段:

@SessionScoped
public class ProductController {
    private List<KB> associatedKBs;

    public List<KB> getAssociatedKBs() {
       this.associatedKBs = current.getKbs();
       return associatedKBs;
    }
}

一切正常:当我将产品与KB关联时,它会被插入数据库(KB_Product表),但是(这就是问题)getKBs()方法只在第一次调用时返回更新的数据。

示例:
1.我创建了一个名为“计算机”的产品 2.我创建了一篇新知识库文章,并将“计算机”与此KB相关联 3.此关联在KB_PRODUCT表中保留 4.第一次调用getKBs()。一切都显示确定。
5.我创建了第二篇知识库文章,并将其与“计算机”相关联 6.此关联将保留在KB_PRODUCT表中 7.再次调用getKBs()但只返回第一个关联,直到我重新部署应用程序。重新部署后,一切都会出现。

编辑:起初我认为这是一个会话问题。事实证明,退出应用程序并再次登录并不能解决问题,只能重新部署。

提前致谢!

1 个答案:

答案 0 :(得分:0)

最后我发现了EntityManager.flush()方法,它就是这样做的。

参考文献: http://www.manning-sandbox.com/thread.jspa?threadID=26541&tstart=-1