【发布时间】:2011-09-13 04:22:46
【问题描述】:
在 JPA 中,我正在尝试为 JPA 对象创建一个更新屏幕,其中包含该对象的类别列表。这是多对多的关系。
我正在 JPA 对象内的表上创建一个连接关系,该对象具有以下属性。
类.java
@JoinTable(name = "classes_has_class_categories",joinColumns = {
@JoinColumn(name = "classes_id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "class_categories_id", referencedColumnName = "id")})
@ManyToMany(cascade = CascadeType.ALL)
private Collection<ClassCategories> classCategoriesCollection;
我的问题的关键包含在以下逻辑中,因为我已经更新了数据库并且数据库中的一切都很好。但是,我的问题是,当我稍后访问该对象时,该对象中的 classCategoriesCollection 属性没有所有正确的对象。我原以为我在下面的刷新和刷新调用会将所有内容与数据库同步,但该对象属性仍然为空,直到我重新部署/重新编译应用程序。请帮助我了解如何让该对象与对象中的当前数据库同步。
类管理器.java
for(String c : cats)
{
int cId = ConvertToInt(c);
ClassCategories ca = em.find(ClassCategories.class, cId);
if(ca != null)
{
try{
if(!cla.getClassCategoriesCollection().contains(ca))
{
ClassHasCategoriesPK classHasCategoriesPK= new ClassHasCategoriesPK();
classHasCategoriesPK.setCategoryId(ca.getId());
classHasCategoriesPK.setClassId(cla.getId());
ClassHasCategories cd = new ClassHasCategories(classHasCategoriesPK);
em.persist(cd);
em.flush();
}
}
catch (Exception ex)
{}
}
}
em.persist(cla); //cla is the Class object instance.
em.flush();
em.refresh(cla);
稍后在代码中......
request.setAttribute("classCategories",cl.getClassCategoriesCollection());
在重新编译应用程序之前没有正确的类。
【问题讨论】: