我有這樣的情況,我有一個類A與類B具有OneToMany關係。類B只包含一些屬性,如id,firstName和lastName。該ID是通過UUID生成的。由於非常多的A實例很可能會引用具有相同的firstName和lastName值的B的實例,並且B實例中的那些值不太可能改變。所以我決定避免重複,並讓A的參考實例與B中相同的實例(在數據庫中)相同(如果其他參數相同)。JPA,堅持OneToMany的實體,其中一些已經存在
例子:
b: "John Doe"
a: a1 ("Foo Bar", "John Doe"), a2 ("John Doe", "Alan Smith").
要做到這一點,我總是檢查與非常相同的參數已經存在的記錄的數據庫,如果一個新的B加入A.如果是的話,我就重寫ID B的實例與來自數據庫的實例相關聯,然後將其添加到A.
現在來了我的問題。一切工作正常,但如果我堅持一個A,我手動改變了B的ID,以便它具有相同的ID已經在數據庫中存在的B I會得到一個例外:
Caused by: org.hibernate.exception.ConstraintViolationException:
Duplicate entry '2cfa1412-5f64-4a9c-b55c-f7db1148bef9' for key 'PRIMARY'
所以我問題是:
- 如何解決此問題而不忽略異常?
- 這是一個適合我需要的好方法嗎?
問候
我相信你是在談論一個多對一一對多的關係,並使用一對多。如果是這種情況,首先解決這個問題。 –