Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得与JPA的众多合作_Java_Hibernate_Oracle11g_Jpa 2.0 - Fatal编程技术网

Java 如何获得与JPA的众多合作

Java 如何获得与JPA的众多合作,java,hibernate,oracle11g,jpa-2.0,Java,Hibernate,Oracle11g,Jpa 2.0,我正在用Spring、Hibernate、jpa2.x和Oracle作为数据库开发一个经典的web应用程序。 我有一个@manytomy关系,当我急切地尝试加载它时,遇到了一个异常。 Demande.java: @Entity @Table(name = "T_DEMANDE_AUTORISATION") public class DemandeAutorisationEntity implements java.io.Serializable { @Id private Lo

我正在用
Spring
Hibernate
jpa2.x
Oracle
作为数据库开发一个经典的web应用程序。 我有一个
@manytomy
关系,当我急切地尝试加载它时,遇到了一个异常。 Demande.java:

@Entity
@Table(name = "T_DEMANDE_AUTORISATION")
public class DemandeAutorisationEntity implements java.io.Serializable {

    @Id
    private Long id;
    @ManyToOne
    @JoinColumn(name = "VAR_ID", nullable = false)
    private VarianteEntity variante;
 ....
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "T_DEMANDE_QUESTION", joinColumns = {
            @JoinColumn(name = "DEMAUT_ID", nullable = false, updatable = false) }, inverseJoinColumns = {
                    @JoinColumn(name = "DEMQUEST_ID", nullable = false, updatable = false) })
    private Set<VarQuestionEntity> varQuestions;

//Getters and Setters

这似乎与查询无关。当hibernate提交txn(例如,在关闭会话时)并发现您的实体ID已更改时,会发生异常。可能是您的检索代码中的某些逻辑或实体中的某些逻辑不正确。这些实体是由HibernateTools生成的,我没有在其中添加任何内容,我还尝试了fetch=FetchType.EAGER,但我遇到了与我所说的相同的问题,它与获取无关。检查堆栈跟踪,我相信您会发现异常并非源自您所查询的行。这是Hibernate提交txn的时候
@Entity
@Table(name = "T_VAR_QUESTION")
@Immutable
public class VarQuestionEntity implements Serializable {

@Id
private Long id;
@ManyToOne
@JoinColumn(name = "VAR_ID", nullable = false)
private VarianteEntity variante;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "varQuestions")
private Set<DemandeAutorisationEntity> demandeAutorisations;
//Getters and Setters
@Override
public List<DemandeAutorisationEntity> searchDemandes(DemandeAutorisationSearch search) {
     StringBuilder sb = new StringBuilder();
     sb.append("from DemandeAutorisationEntity demande ")
       .append(" INNER JOIN FETCH demande.varQuestions varQuestions");
     Query query = em.createQuery(sb.toString());

     return query.getResultList();
}
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: identifier of an instance of fr.pasteur.gaip.dal.parameters.VarQuestionEntity was altered from 1 to null
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:67)
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517)
    ... 74 more
Caused by: org.hibernate.HibernateException: identifier of an instance of fr.pasteur.gaip.dal.parameters.VarQuestionEntity was altered from 1 to null
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:64)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:175)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:135)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:216)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:85)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:38)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1282)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:465)
    at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2963)
    at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2339)
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:485)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:147)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231)
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65)
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:61)
    ... 75 more