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'中。 –