使用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' **來避免重複的約束異常。 –