我有2个实体(SubModelo和Opcional)。 SubModelo可能有一个Opcionals列表,因此是单向关系。当我试图坚持SubModelo实体并且它在opcional列表上没有Opcional时,Hibernate会正常持续,但是如果我在列表中包含一些opcional,它就不会持久存在,并且会给出错误,指出opcional实体不太可能持久存在。 Hibernate为关系创建了第三个表,但不包含任何内容。
@Entity
public class SubModelo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column
@Size(max = 30)
private String nome;
@NotNull
@Size (max = 9)
private String motor;
@NotNull
private boolean automatico;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Opcional> opcionais;
22:49:56,633 ERROR [org.jboss.as.ejb3.invocation] (default task-10) WFLYEJB0034: EJB Invocation failed on component SubModeloService for method public br.com.ozelo.entidades.SubModelo br.com.ozelo.servico.SubModeloService.novoSubModelo(br.com.ozelo.entidades.SubModelo): javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.ozelo.entidades.Opcional
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:187)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:277)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:327)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
Caused by: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.ozelo.entidades.Opcional
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1152)
at org.jboss.as.jpa.container.AbstractEntityManager.persist(AbstractEntityManager.java:580)
at br.com.ozelo.DAO.BasicDao.addEntity(BasicDao.java:22)
at br.com.ozelo.DAO.SubModeloDao.novoSubModelo(SubModeloDao.java:24)
at br.com.ozelo.servico.SubModeloService.novoSubModelo(SubModeloService.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
23:31:01,042 INFO [stdout] (default task-1) javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.ozelo.entidades.Opcional