Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
如何解决org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联?_Hibernate_Spring Mvc - Fatal编程技术网

如何解决org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联?

如何解决org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联?,hibernate,spring-mvc,Hibernate,Spring Mvc,您好,我是hibernet的新手我试图在CloudSql中插入数据,但我得到了org.hibernate.hibernateeException:非法尝试将集合与两个打开的会话关联 请检查我的密码 Domain.java @Entity @Table(name="TBL_STD_DOMAIN") public class Domain { @Id @GeneratedValue @Column(name ="FLD_DOMAIN_ID") private Long domainId;

您好,我是hibernet的新手我试图在CloudSql中插入数据,但我得到了org.hibernate.hibernateeException:非法尝试将集合与两个打开的会话关联 请检查我的密码

Domain.java

  @Entity
 @Table(name="TBL_STD_DOMAIN")
 public class Domain {

@Id
@GeneratedValue
@Column(name ="FLD_DOMAIN_ID")
private Long domainId;

@Column(name = "FLD_DOMAIN_NAME")
private String domainName;
@Column(name = "FLD_PRIMAY_DOMAIN_ID")
private Long primary_Domain_Id;
@Column(name = "FLD_CUSTOMER_ID")
private Long customerId;

@Column(name = "FLD_IS_ACTIVE")
@org.hibernate.annotations.Type(type="true_false")
private boolean isActive;

@Column(name = "FLD_ISPRIMARYDOMAIN")
@org.hibernate.annotations.Type(type="true_false")
private boolean isPrimayDomain;
  @OneToMany( mappedBy="domain",cascade=CascadeType.ALL )
@JoinTable(name = "Domain_UserProfile", 
        joinColumns = { @JoinColumn(name = "FLD_DOMAIN_ID") },
        inverseJoinColumns = { @JoinColumn(name = "FLD_USERPROFILE_ID") })

private Collection<UserProfile> userProfile = new ArrayList<UserProfile>();

@OneToMany( mappedBy="domain",cascade=CascadeType.ALL )
@JoinTable(name = "Domain_Organization", 
        joinColumns = { @JoinColumn(name = "FLD_DOMAIN_ID") },
        inverseJoinColumns = { @JoinColumn(name = "FLD_ORG_ID") })

private Collection<Organization> orgnization = new ArrayList<Organization>();
//**SETTER AND GEETER METHODS**
}

MyGenericDAo

 public abstract class GenericDaoImpl <T> extends HibernateDaoSupport  implements              IGenericDao<T> {

private static final Logger log = Logger.getLogger(GenericDaoImpl.class.getName()); 

@Autowired
public void setHibernateSessionFactory(SessionFactory sessionFactory)
{
    setSessionFactory(sessionFactory);
}

@Override
public T save(T t) {
    //getHibernateTemplate().save(t);

    //getHibernateTemplate().saveOrUpdate(t);
    Session session = getSessionFactory().openSession();
    Transaction tx=session.beginTransaction();
    session.saveOrUpdate(t);
    tx.commit();
    session.close();
    return t;
}

@Override
public T merge(T t) {
    //getHibernateTemplate().save(t);

    //getHibernateTemplate().saveOrUpdate(t);
    Session session = getSessionFactory().openSession();
    session.beginTransaction();
    session.merge(t);
    session.close();
    return t;
}

@Override
public void delete(T t) {
    getSession().delete(t);
}
public抽象类GenericDaoImpl扩展了HibernateDaoSupport实现了IGenericDao{
私有静态最终记录器log=Logger.getLogger(GenericDaoImpl.class.getName());
@自动连线
公共无效设置HibernateSessionFactory(SessionFactory SessionFactory)
{
设置会话工厂(会话工厂);
}
@凌驾
公共T存储(T T){
//getHibernateTemplate().save(t);
//getHibernateTemplate().saveOrUpdate(t);
会话会话=getSessionFactory().openSession();
事务tx=会话.beginTransaction();
会话.saveOrUpdate(t);
tx.commit();
session.close();
返回t;
}
@凌驾
公共T合并(T T){
//getHibernateTemplate().save(t);
//getHibernateTemplate().saveOrUpdate(t);
会话会话=getSessionFactory().openSession();
session.beginTransaction();
合并(t);
session.close();
返回t;
}
@凌驾
公共作废删除(T){
getSession().delete(t);
}
} 但当我试图保存我得到的对象时

警告:异常..org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联 org.hibernate.HibernateException:非法尝试将集合与两个打开的会话关联 位于org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:432) 位于org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:66) 位于org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:124) 位于org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:84) 位于org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:78) 位于org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:146) 位于org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:316) 在org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:246) 位于org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:112) 位于org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) 位于org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:535) 位于org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527) 位于org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:523) 位于com.cloudcodes.gdirectory.daoImpl.GenericDaoImpl.save(GenericDaoImpl.java:36) 位于com.cloudcodes.gdirectory.managerImpl.GenericServiceManagerImpl.save(GenericServiceManagerImpl.java:26) 位于com.cloudcodes.gdirectory.controller.ProfileController.profileSynch(ProfileController.java:401) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于com.google.appengine.tools.development.agent.runtime.runtime.invoke(runtime.java:115) 位于org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) 位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) 位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 位于org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 位于com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.appengine.tools.development.ResponseWriterFilter.doFilter(responseWriterFilter.java:123) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.appengine.tools.development.headerficationfilter.doFilter(headerficationfilter.java:34) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter上(ServeBlobFilter.java:63) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在com.google.appengine.tools.developme上
 Entity
  @Table(name="TBL_STD_USERPROFILE")
  public class UserProfile {
@Id
@GeneratedValue
@Column(name = "FLD_USER_ID")
private Long userId;


@Column(name = "FLD_CREATED_ON")
@Temporal(TemporalType.DATE)
private Date createdOn;

@Column(name = "FLD_IMAGE_BLOB_KEY")
private String imageBlobKey;

@Column(name = "FLD_LASTMODIFIED_ON")
@Temporal(TemporalType.DATE)
private Date lastModifiedOn;
   @ManyToOne
private Domain domain;
 //SETTER ,GETTER METHODS
 public abstract class GenericDaoImpl <T> extends HibernateDaoSupport  implements              IGenericDao<T> {

private static final Logger log = Logger.getLogger(GenericDaoImpl.class.getName()); 

@Autowired
public void setHibernateSessionFactory(SessionFactory sessionFactory)
{
    setSessionFactory(sessionFactory);
}

@Override
public T save(T t) {
    //getHibernateTemplate().save(t);

    //getHibernateTemplate().saveOrUpdate(t);
    Session session = getSessionFactory().openSession();
    Transaction tx=session.beginTransaction();
    session.saveOrUpdate(t);
    tx.commit();
    session.close();
    return t;
}

@Override
public T merge(T t) {
    //getHibernateTemplate().save(t);

    //getHibernateTemplate().saveOrUpdate(t);
    Session session = getSessionFactory().openSession();
    session.beginTransaction();
    session.merge(t);
    session.close();
    return t;
}

@Override
public void delete(T t) {
    getSession().delete(t);
}