使用Hibernate实体。 DB中有Address
和Room
实体和适当的表。
Address
可以有多个Room
s。
使用相关表中的FK列值更新表
两个表都有address_Id
和customerEmailAddress
这些列FK
在Room
表中,以Address
表引用。
数据库中已有Address
记录。
需要添加几个房间到this
地址。
如何组织Address
和Room
之间有注解Hibernate的关系,所以Room
表进行相应的属性,从地址进行更新:
address_Id
和customerEmailAddress
Java的部分看起来像:
Room room = new Room();
Address addr = someService.getAddressFromSession();
room.add(addr);
entityManager.persist(room);
Room room2 = new Room();
room2.add(addr);
entityManager.persist(room2);
DB结果(房间表)应该如下:
id || addressId || customerEmailAddress
1 || 3 || [email protected]
2 || 3 || [email protected]
喜Yogendra,谢谢你hint.I会反馈很快它的工作原理。 – sergionni
得到'... MySQLIntegrityConstraintViolationException:重复条目...',而坚持'地址',尽可能在数据库中存在。也许,我应该使用其他'CascadeType'? – sergionni
你的房间桌子上还有其他限制吗?另外请确保,除了新的房间对象外,所有的房间对象都填充了“Id”(主键)。所有旧房间对象应该只是原来加载的对象。 Hibernate使用主键来确定,无论是插入还是更新。另外**使用'merge'代替'persist' **来避免重复的约束异常。 –