問題來源
java.lang.IllegalStateException: Multiple representations of the same entity are being merged.
因爲試圖給 某一個new 的Transient對象 的某一個屬性賦一個 已經Persistent 對象或者Detached 對象值。導致最後save 或者merge 這個Transient對象報這個錯誤。
解決方式
hibernate
- hibernate的配置文件,添加以下內容:
<property name="hibernate.event.merge.entity_copy_observer">allow</property>
- 或者,hibernate更新爲4.2.15 以上版本
Hibernate 自身的一個bug,詳情見官方解決
Spring
- spring的數據源中配置以下內容:
<prop key="hibernate.event.merge.entity_copy_observer">allow</prop>
SpringBoot
- application.properties文件添加以下內容
spring.jpa.properties.hibernate.event.merge.entity_copy_observer=allow
- application.yaml文件添加以下內容
spring:
jpa:
properties:
hibernate:
event:
merge.entity_copy_observer: allow