我有以下兩個類。 「類型」類具有「內容」類的對象。 我想通過使用hibernate.save()方法保存類'Type'的所有引用對象。我在類「內容」中將級聯類型指定爲ALL。Hibernate無法使用級聯保存子對象全部
以下是我面對的錯誤: 對象引用未保存的瞬態實例 - 在刷新之前保存瞬態實例。
有人可以幫我找出問題所在嗎?
public class Type {
@OneToOne
@JoinColumn(name = "content_id")
private Content content;
}
public class Content {
@OneToOne(mappedBy = "content", cascade = CascadeType.ALL)
private Type type;
}
public class Test {
public void createType() {
Type type = new Type();
Content content = someMethodToGetContent();
type.setContent(content);
save(type);
}
public void save(Object domainObj) {
getEntityManager().persist(domainObj);
getEntityManager().flush();
}
}
堆棧跟蹤:
產生的原因:org.hibernate.TransientObjectException: - 對象引用 未保存的瞬態的實例之前 沖洗保存瞬態的實例:。內容 - >。內容在 org.hibernate.engine.CascadingAction $ 9.noCascade(CascadingAction.java:387) at org.hibernate.engine.Cascade.cascade(Cascade.java:172)at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush( AbstractFlushingEventListener.java:154) 在 org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145) 在 org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88) 在 org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) 在org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)在 org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl .java:795) ... 27更多 org.springframework.transaction.TransactionSystemException:無法提供 提交JPA事務;嵌套的異常是 javax.persistence.RollbackException:Transacti上標記爲 rollbackOnly在 org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:526) 在 org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit (AbstractPlatformTransactionManager.java:761) 在 org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504) 在 org.springframework.transaction.interceptor.Tran sactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 179) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 在com.sun.proxy $ Proxy29.persist(來源不明)產生的原因:。 javax.persistence.RollbackException:交易標記爲 rollbackOnly在 org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:73)at org.springframework.orm.jpa.JpaTransactionManage r.doCommit(JpaTransactionManager.java:517) ...12更多
代碼試圖保存在哪裏?它節省了什麼?什麼是異常的**完整**堆棧跟蹤? –
你的班上有沒有一個瞬態變量? – msagala25
@JBNizet:增加了代碼 – minion