在JPA中,我想創建一個JPA對象的更新屏幕,並帶有該對象的類別列表。這是一個多對多的關係。JPA ManyToMany不填充對象屬性
我在具有以下屬性的JPA對象內的表上創建了一個連接關係。
Classes.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;
我的問題的關鍵是包含以下邏輯內,我已經更新了數據庫,一切都在DB內大。但是,我的問題是,當我稍後訪問該對象時,對象中的classCategoriesCollection屬性不具有所有正確的對象。我原以爲我在下面的刷新和刷新調用會將所有內容與數據庫同步,但該對象屬性仍爲空,直到我重新部署/重新編譯應用程序。請幫助我瞭解如何讓此對象與對象中的當前數據庫同步。
ClassManager.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());
不具備正確的類,直到應用程序重新編譯。
感謝,新來JPA,我仍然在找出如何正確映射關係。我需要找一本可靠的書。 – JCab
很高興爲您服務。 JPA有它的特質,其中一些將甚至驅動有經驗的程序,直到他們在實踐中發現事情應該如何完成。我可以說的是:「在那裏,做到了」。 –