0
我有兩個對象誰是雙向關係。休眠複製合併後的對象
public class Entity1 extends AbstractEntity implements Serializable{
...
//bi-directional many-to-one association to Entity2
@OneToMany(mappedBy="entity1", fetch=FetchType.EAGER)
private Set<Entity2> entityTwos = new HashSet<Entity2>();
}
public class Entity1 extends AbstractEntity implements Serializable{
...
//bi-directional many-to-one association to Entity1
@ManyToOne
@JoinColumn(name="N_ENTITY1")
private Entity1 entity1;
}
所以,當我修改ENTITY1和做到這一點:
Entity2 entity2 = new Entity2();
entity2.setValue("I");
entity2.setDate(new Date());
entity1.addEntityTwo(entity2);
Entity2HibernateDao dao = new Entity2HibernateDao();
dao.save(entity2);
getEnitity1Dao().merge(nalog);
一切都在數據庫中還算可以,但我重新啓動應用程序後,也有我的JTable的ENTITY1兩行。如果我刪除:
Entity2HibernateDao dao = new Entity2HibernateDao();
dao.save(entity2);
ENTITY1 ENTITY1的其他屬性中刷新數據庫中,但當然也有對ENTITY2沒有記錄。 我也嘗試用update()而不是merge(),但它也不起作用。 我是否正確連接Entity1和Entity2的引用?或者是別的什麼? 謝謝。
您還需要調用'entity2.setEntity1(entity1);'以正確保存它們。 –
其實,我在方法addEntityTwo()中生成了這段代碼,已經有line:entity2.setEntity1(this),所以我認爲這不是問題,因爲它在數據庫中正確添加,但我認爲對象在會話中被重複。不管怎麼說,還是要謝謝你。 – Alen
你是如何加載它們的?如果你使用的是像'session.list()'這樣的列表,將它們包裝到'set'中。 –