javax.servlet.ServletException: could not load an entity: [cup.edu.hibernate.Dept#1]
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
起 因org.hibernate.exception.JDBCConnectionException: could not load an entity: [cup.edu.hibernate.Dept#1]
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
org.hibernate.loader.Loader.loadEntity(Loader.java:1899)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
cup.edu.hibernate.DeptDAO.findById(DeptDAO.java:54)
cup.edu.struts.action.AddstuffAction.execute(AddstuffAction.java:59)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
起 因org.hibernate.exception.JDBCConnectionException: could not load an entity: [cup.edu.hibernate.Dept#1]
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
org.hibernate.loader.Loader.loadEntity(Loader.java:1899)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
cup.edu.hibernate.DeptDAO.findById(DeptDAO.java:54)
cup.edu.struts.action.AddstuffAction.execute(AddstuffAction.java:59)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
起 因org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [cup.edu.hibernate.Stuff#44]
org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:191)
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:144)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
cup.edu.hibernate.StuffDAO.save(StuffDAO.java:42)
cup.edu.struts.action.AddstuffAction.execute(AddstuffAction.java:66)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Stuff stuff=new Stuff();
stuff.setStuffid(addstuffForm.getStuffid());
stuff.setStuffname(addstuffForm.getStuffname());
stuff.setSex(addstuffForm.getSex());
stuff.setAge(addstuffForm.getAge());
stuff.setIdcard(addstuffForm.getIdcard());
stuff.setWage(addstuffForm.getWage());
stuff.setSocialsecurity(addstuffForm.getSocialsecurity());
stuff.setEducation(addstuffForm.getEducation());
stuff.setDegree(addstuffForm.getDegree());
stuff.setTechgrade(addstuffForm.getTechgrade());
System.out.println("addstuff---------->1");
DeptDAO deptDAO=new DeptDAO();
Dept dept=new Dept();
dept=deptDAO.findById(addstuffForm.getDeptid());
stuff.setDept(dept);
stuff.setPosition(addstuffForm.getPosition());
stuff.setTitle(addstuffForm.getTitle());
stuff.setStatus(addstuffForm.getStatus());
stuffDAO.save(stuff);
第二次action,出现这个提示:
javax.servlet.ServletException: a different object with the same identifier value was already associated with the session: [cup.edu.hibernate.Stuff#44]
应该指已经有了相同的数据吧。hibernate已经有数据了,但是没插到mysql里吧,这是为什么呢
你 这Dept dept=new Dept();不要new 试试Dept dept=deptDAO.findById(addstuffForm.getDeptid());
public void save(Stuff transientInstance) {
log.debug("saving Stuff instance");
try {
getSession().save(transientInstance);//42行
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
应该是getSession()的问题,getSession()会出现什么问题呢?
/hr/src/cup/edu/hibernate/IBaseHibernateDAO.javapackage cup.edu.hibernate;import org.hibernate.Session;
/**
* Data access interface for domain model
* @author MyEclipse Persistence Tools
*/
public interface IBaseHibernateDAO {
public Session getSession();
}
/**
* Data access object (DAO) for domain model
* @author MyEclipse Persistence Tools
*/
public class BaseHibernateDAO implements IBaseHibernateDAO {
public Session getSession() {
return HibernateSessionFactory.getSession();
}
}*******************************************************************
/hr/src/cup/edu/hibernate/HibernateSessionFactory.java public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
} return session;
}
最后getSession()应该是在这里