@Onetomany Cause Collection与任何会话无关



我正在尝试使用Hibernate在一个查询中获取大量数据。

我有这个名为查询:

SELECT r FROM Reservationlight_SS r LEFT JOIN r.personne p WHERE 
  r.iDSport =:IDSport AND r.iDSaison =:IDSaison AND 
  r.dateReservation =:date GROUP BY r.numeroReservation, r.heureDebutReservation, r.iDTerrain

当我使用"左加入"的"加入"时,我只有匹配r.personne的行。但是有时候,R.Personne是无效的。因此,我决定使用"左联接"和Hibernate给我这个错误:

org.hibernate.HibernateException: collection is not associated with any session

我尝试搜索是否可以将@OneToMany作为可选,但这是不可能的。但是我很确定这可能是一种做到这一点的方法吗?

这是我现在在代码中的关系:

@OneToMany(fetch = FetchType.EAGER)
@OrderBy(value = "NumReservation")
@JoinColumns({
    @JoinColumn(name="NumReservation", referencedColumnName="NumeroReservation")
})
private List<Personnereservationlight> personne;

我成功地通过删除"加入"而获得所有保留灯,而无需persothne,并成功地将所有r.personne在另一个表中带有" join"的r.personne。但是当我放置"左JON"时,我不能同时在同一请求中。

有人有一个主意?

谢谢您的帮助

堆栈跟踪:

Infos:   org.hibernate.HibernateException: collection is not associated with any session
Avertissement:   A system exception occurred during an invocation on EJB ReservationFacade, method: public java.util.List ch.plugin.plugin.dao.ReservationFacade.getAllReservationByDate(java.lang.Integer,java.lang.Integer,java.util.Date)
Avertissement:   javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
    at com.sun.ejb.containers.EJBContainerTransactionManager.useClientTx(EJBContainerTransactionManager.java:357)
    at com.sun.ejb.containers.EJBContainerTransactionManager.preInvokeTx(EJBContainerTransactionManager.java:251)
    at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4524)
    at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1986)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:210)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
    at com.sun.proxy.$Proxy10505.getAllReservationByDate(Unknown Source)
    at ch.plugin.plugin.BusinessService.ReservationManager.getAllReservationByDate(ReservationManager.java:797)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786)
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:46)
    at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
    at sun.reflect.GeneratedMethodAccessor2154.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
    at sun.reflect.GeneratedMethodAccessor2155.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
    at com.sun.proxy.$Proxy10481.getAllReservationByDate(Unknown Source)
    at service.ReservationFacadeREST.getAllReservationByDate(ReservationFacadeREST.java:281)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786)
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:46)
    at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
    at sun.reflect.GeneratedMethodAccessor2154.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
    at sun.reflect.GeneratedMethodAccessor2155.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
    at com.sun.proxy.$Proxy10551.getAllReservationByDate(Unknown Source)
    at service.__EJB31_Generated__ReservationFacadeREST__Intf____Bean__.getAllReservationByDate(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

实体:

@Entity
@Table(name = "reservationlight")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "getAllReservationByDateSS", query = "SELECT r FROM Reservationlight_SS r LEFT JOIN r.personne p WHERE r.iDSport =:IDSport AND r.iDSaison =:IDSaison AND r.dateReservation =:date GROUP BY r.numeroReservation, r.heureDebutReservation, r.iDTerrain")
})
public class Reservationlight_SS implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "DateReservation")
    @Temporal(TemporalType.DATE)
    private Date dateReservation;
    @Id
    @Column(name = "HeureDebutReservation")
    @Temporal(TemporalType.TIME)
    private Date heureDebutReservation;
    @Id
    @Column(name = "IDTerrain")
    private int iDTerrain;
    @Size(max = 7)
    @Column(name = "CouleurReservation")
    private String couleurReservation;
    @Column(name = "NumeroReservation")
    private Integer numeroReservation;
    @Id
    @Column(name = "IDSport")
    private int iDSport;
    @Id
    @Column(name = "IDSaison")
    private int iDSaison;
    @Column(name = "IDCours")
    private Integer IDCours;
    @Column(name = "isPaye")
    private int isPaye;
    @Column(name = "Etat")
    private boolean etat;
    @Size(max = 25)
    @Column(name = "Nom")
    private String nom;
    @Size(max = 25)
    @Column(name = "Prenom")
    private String prenom;
    @Column(name = "IDUser")
    private Integer iDUser;
    @Column(name = "IDPersonne")
    private Integer iDPersonne;
    @Size(max = 65535)
    @Column(name = "Texte")
    private String texte;
    @Column(name = "Prix")
    private float prix;
    @Size(max = 65535)
    @Column(name = "Notification")
    private String notification;
    @Column(name = "JEtat")
    private String jEtat;
    @ManyToOne(optional = true)
    @JoinColumns({
        @JoinColumn(name="IDRecurrence", referencedColumnName="IDRecurrence"),
    })
    private Recurrencelight recurrence;
    @OneToMany(fetch = FetchType.EAGER)
    @OrderBy(value = "NumReservation")
    @JoinColumns({
        @JoinColumn(name="NumReservation", referencedColumnName="NumeroReservation")
    })
    private List<Personnereservationlight> personne;
    public Reservationlight_SS() {
    }
    public Reservationlight_SS(Reservationlight_SS rh)
    {
        this.IDCours = rh.getIDCours();
        this.couleurReservation = rh.getCouleurReservation();
        this.dateReservation = rh.getDateReservation();
        this.etat = rh.getEtat();
        this.heureDebutReservation = rh.getHeureDebutReservation();
        this.iDPersonne = rh.getIDPersonne();
        this.iDSaison = rh.getIDSaison();
        this.iDSport = rh.getIDSport();
        this.iDTerrain = rh.getIDTerrain();
        this.iDUser = rh.getIDUser();
        this.isPaye = rh.getIsPaye();
        this.jEtat = rh.getjEtat();
        this.nom = rh.getNom();
        this.prenom = rh.getPrenom();
        this.notification = rh.getNotification();
        this.numeroReservation = rh.getNumeroReservation();
        this.prix = rh.getPrix();
        this.texte = rh.getTexte();
        this.recurrence = rh.getRecurrence();
        this.personne = rh.getPersonne();
    }
    public Date getDateReservation() {
        return dateReservation;
    }
    public void setDateReservation(Date dateReservation) {
        this.dateReservation = dateReservation;
    }
    public Date getHeureDebutReservation() {
        return heureDebutReservation;
    }
    public void setHeureDebutReservation(Date heureDebutReservation) {
        this.heureDebutReservation = heureDebutReservation;
    }
    public int getIDTerrain() {
        return iDTerrain;
    }
    public void setIDTerrain(int iDTerrain) {
        this.iDTerrain = iDTerrain;
    }
    public String getCouleurReservation() {
        return couleurReservation;
    }
    public void setCouleurReservation(String couleurReservation) {
        this.couleurReservation = couleurReservation;
    }
    public Integer getNumeroReservation() {
        return numeroReservation;
    }
    public void setNumeroReservation(Integer numeroReservation) {
        this.numeroReservation = numeroReservation;
    }
    public int getIDSport() {
        return iDSport;
    }
    public void setIDSport(int iDSport) {
        this.iDSport = iDSport;
    }
    public int getIDSaison() {
        return iDSaison;
    }
    public void setIDSaison(int iDSaison) {
        this.iDSaison = iDSaison;
    }
    public Recurrencelight getRecurrence() {
        return recurrence;
    }
    public void setRecurrence(Recurrencelight recurrence) {
        this.recurrence = recurrence;
    }
    public Integer getIDCours() {
        return IDCours;
    }
    public void setIDCours(Integer IDCours) {
        this.IDCours = IDCours;
    }
    public int getIsPaye() {
        return isPaye;
    }
    public void setIsPaye(int isPaye) {
        this.isPaye = isPaye;
    }
    public boolean getEtat() {
        return etat;
    }
    public void setEtat(boolean etat) {
        this.etat = etat;
    }
    public String getNom() {
        return nom;
    }
    public void setNom(String nom) {
        this.nom = nom;
    }
    public String getPrenom() {
        return prenom;
    }
    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }
    public Integer getIDUser() {
        return iDUser;
    }
    public void setIDUser(Integer iDUser) {
        this.iDUser = iDUser;
    }
    public Integer getIDPersonne() {
        return iDPersonne;
    }
    public void setIDPersonne(Integer iDPersonne) {
        this.iDPersonne = iDPersonne;
    }
    public String getTexte() {
        return texte;
    }
    public void setTexte(String texte) {
        this.texte = texte;
    }
    public float getPrix() {
        return prix;
    }
    public void setPrix(float prix) {
        this.prix = prix;
    }
    public String getNotification() {
        return notification;
    }
    public void setNotification(String notification) {
        this.notification = notification;
    }
    public String getjEtat() {
        return jEtat;
    }
    public void setjEtat(String jEtat) {
        this.jEtat = jEtat;
    }
    public List<Personnereservationlight> getPersonne() {
        return personne;
    }
    @Transactional
    public void setPersonne(List<Personnereservationlight> personne) {
        this.personne = personne;
    }
    @Override
    public int hashCode() {
        int hash = 3;
        hash = 17 * hash + Objects.hashCode(this.dateReservation);
        hash = 17 * hash + Objects.hashCode(this.heureDebutReservation);
        hash = 17 * hash + this.iDTerrain;
        hash = 17 * hash + this.iDSport;
        hash = 17 * hash + this.iDSaison;
        return hash;
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Reservationlight_SS other = (Reservationlight_SS) obj;
        if (!Objects.equals(this.dateReservation, other.dateReservation)) {
            return false;
        }
        if (!Objects.equals(this.heureDebutReservation, other.heureDebutReservation)) {
            return false;
        }
        if (this.iDTerrain != other.iDTerrain) {
            return false;
        }
        if (this.iDSport != other.iDSport) {
            return false;
        }
        if (this.iDSaison != other.iDSaison) {
            return false;
        }
        return true;
    }
    @Override
    public String toString() {
        return "Reservationlight_SS{" + "dateReservation=" + dateReservation + ", heureDebutReservation=" + heureDebutReservation + ", iDTerrain=" + iDTerrain + ", couleurReservation=" + couleurReservation + ", numeroReservation=" + numeroReservation + ", iDSport=" + iDSport + ", iDSaison=" + iDSaison + ", isPaye=" + isPaye + ", etat=" + etat + ", nom=" + nom + ", prenom=" + prenom + ", iDUser=" + iDUser + ", iDPersonne=" + iDPersonne + ", texte=" + texte + ", prix=" + prix + ", notification=" + notification + '}';
    }
}

代码抛出例外:JTA

@Stateless
public class ReservationFacade extends AbstractFacade<Reservation> implements ReservationFacadeLocal {
    @EJB
    EntityMan EntityMan;
    protected EntityManager getEntityManager() {
        return EntityMan.getEM();
    }
    public ReservationFacade() {
        super(Reservation.class);
    }
    public List<Reservationlight_SS> getAllReservationByDate(Integer idSport, Integer idSaison, Date date) {
        try{
            return getEntityManager().createNamedQuery("getAllReservationByDateSS").setParameter("IDSport", idSport).setParameter("IDSaison", idSaison).setParameter("date", date).getResultList();
        }catch(Throwable th){
            System.out.println(th.getMessage());
            throw new SportReservExceptions(getClass().getName() + " -> " + th);
        }
    }

}

在大多数情况下异常

org.hibernate.HibernateException: collection is not associated with any session

向您展示您尝试修改收集而无需任何交易,例如修复了以下代码

@Transactional
public ... methodToChangeCollection(...) {
   // you code
}

更多信息,请参阅或此

更新:

您可以尝试手动使用事务,例如:

public List<Reservationlight_SS> getAllReservationByDate(Integer idSport, Integer idSaison, Date date) {
        try{
            EntityManager em = getEntityManager();
            em.getTransaction().begin();
            List<Reservationlight_SS> result = em.createNamedQuery("getAllReservationByDateSS").setParameter("IDSport", idSport).setParameter("IDSaison", idSaison).setParameter("date", date).getResultList();
             em.getTransaction().commit(); 
            return result;
        }catch(Throwable th){
            System.out.println(th.getMessage());
            throw new SportReservExceptions(getClass().getName() + " -> " + th);
        }
    }

据我所知,您的实体Reservationlight_SS不是关系的所有者。这意味着您的实体Personnereservationlight的表具有Reservationlight_SS的外键。在这种情况下,您很可能希望将mappedBy元素与OneToMany注释一起使用。

如果您使用的是Spring,那么您还需要检查交易管理是否适当地在您的配置中使用@EnableTransactionManagement<tx:annotation-driven/>

在我的情况下问题是 FetchType.EAGER

如果JPA存储库中的发现结合,则应将@TransactionalFetchType.LAZY结合使用

相关内容

最新更新