我是新來的,我希望能夠爲我的問題找到一個解決方案。我有一個異常org.hibernate.PersistentObjectException與ManyToMany關係中保存數據。我使用Spring框架和Maven。org.hibernate.PersistentObjectException與組合Spring,Maven和Hibernate
這是我對Hibernate註解
//class Result
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "result_player",
joinColumns = { @JoinColumn(name = "result_id", nullable = true) },
inverseJoinColumns = { @JoinColumn(name = "player_id", nullable = true) })
private List<Player> players;
//class Player
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL,mappedBy="players")
private List<Result> results;
部分在應用context.xml文件Hibernate和JDBC設置
<!-- ORM, Hibernate, JDBC -->
<context:property-placeholder location="classpath:cfg/properties/jdbc.properties"/>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
p:password="${jdbc.password}" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="mytable.scores.model" />
<property name="jpaPropertyMap" ref="jpaPropertyMap" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
</bean>
<util:map id="jpaPropertyMap">
<entry key="hibernate.dialect" value="${jdbc.dialect}" />
<entry key="hibernate.show_sql" value="true" />
<entry key="hibernate.format_sql" value="true" />
<entry key="hibernate.hbm2ddl.auto" value="update" />
<entry key="hibernate.jdbc.batch_size" value="50" />
<entry key="hibernate.connection.CharSet" value="utf8" />
<entry key="hibernate.connection.characterEncoding" value="utf8" />
<entry key="hibernate.connection.useUnicode" value="true" />
</util:map>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
當我列出哪裏是新玩家保存的結果,一切都罰款和保存,在表result_player保存IDS。但如果我然後把這個球員,改變,放在Resultplayers列表和托盤保存,然後我得到這個錯誤org.hibernate.PersistentObjectException分離的實體傳遞到persist:播放器
我讀了很多答案,但這個錯誤,但組合Spring和Maven與Hibernate annonations我不知道,我需要設置其他的東西或我需要調用一些方法(persist())?何時在存儲對象之前或之後調用pesist?
在此先感謝您的幫助....
感謝您的照片。並回答。我認爲春天所做的一切,因爲我把註釋「cascade = CascadeType.ALL」,但顯然我必須邀請persist()方法。我必須閱讀文檔,因爲我從來沒有使用過這個。我希望能夠用所有已完成的註釋來彈出:)) – zexco2 2014-10-30 14:06:34
這個例外說明你正試圖堅持一個分離的對象,這就是全部。春天無事可做 – Skizzo 2014-10-30 14:16:04
我開始閱讀文檔。非常感謝您的建議,我希望能夠快速解決問題... – zexco2 2014-10-30 14:28:32