当前位置: 代码迷 >> J2EE >> 干SSH项目出现:org.hibernate.MappingException: Unknown entity
  详细解决方案

干SSH项目出现:org.hibernate.MappingException: Unknown entity

热度:75   发布时间:2016-04-17 23:32:53.0
做SSH项目出现:org.hibernate.MappingException: Unknown entity:
最近学习SSH出现这个情况,也比较奇怪,我用junit测试的没问题,但提交的表单数据就有问题出现org.hibernate.MappingException: Unknown entity:异常:
异常信息:
stujiating1 : com.xjgl.server.entity.Stujiatinginfotb@5868d40c
Hibernate: select stujiating0_.id as id1_, stujiating0_.sno as sno1_, stujiating0_.jiatingjiegou as jiatingj3_1_, stujiating0_.jiatingfenwei as jiatingf4_1_, stujiating0_.jiatingdizhi as jiatingd5_1_, stujiating0_.jiatingdianhua as jiatingd6_1_, stujiating0_.youbian as youbian1_, stujiating0_.dushengzhinv as dushengz8_1_ from stujiatinginfo stujiating0_ where stujiating0_.sno=?
2014/11/10 12:48:05[DEBUG][com.xjgl.server.dao.StujiatinginfoDao]:144 -- 添加学生101_1的家庭信息成功
==================================================
student.getStujiatinginfo() : com.xjgl.server.entity.Stujiatinginfotb@1fd7855
stujiating2.sno : 101_2
stujiating2.youbian : 
Hibernate: insert into student (name, sno, id) values (?, ?, ?)
Hibernate: insert into stujiatinginfo (sno, jiatingjiegou, jiatingfenwei, jiatingdizhi, jiatingdianhua, youbian, dushengzhinv, id) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: select stujiating0_.id as id1_, stujiating0_.sno as sno1_, stujiating0_.jiatingjiegou as jiatingj3_1_, stujiating0_.jiatingfenwei as jiatingf4_1_, stujiating0_.jiatingdizhi as jiatingd5_1_, stujiating0_.jiatingdianhua as jiatingd6_1_, stujiating0_.youbian as youbian1_, stujiating0_.dushengzhinv as dushengz8_1_ from stujiatinginfo stujiating0_ where stujiating0_.sno=?
2014/11/10 12:48:05[ERROR][org.apache.struts2.dispatcher.Dispatcher]:38 -- Exception occurred during processing request: Unknown entity: com.xjgl.server.entity.Stujiatinginfotb$$EnhancerByCGLIB$$5d40c870
org.hibernate.MappingException: Unknown entity: com.xjgl.server.entity.Stujiatinginfotb$$EnhancerByCGLIB$$5d40c870
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:691)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1485)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
at com.xjgl.server.dao.StujiatinginfoDao.saveStujiatinginfo(StujiatinginfoDao.java:143)

程序代码:
其中:stujiating1 能保存成功,stujiating2不能保存成功,异常信息就是在保存stujiating2时出现的
Stujiatinginfotb stujiating1 = new Stujiatinginfotb();
stujiating1.setId(sid + "_1");
stujiating1.setSno(sno + "_1");
System.out.println(" stujiating1 : " + stujiating1);
stujiatinginfoDao.saveStujiatinginfo(stujiating1);

System.out.println(" ==================================================");
Stujiatinginfotb stujiating2 = new Stujiatinginfotb();
System.out.println(" student.getStujiatinginfo() : " + student.getStujiatinginfo());
stujiating2 = student.getStujiatinginfo();
stujiating2.setId(sid + "_2");
stujiating2.setSno(sno + "_2");
System.out.println(" stujiating2.sno : " + stujiating2.getSno());
System.out.println(" stujiating2.youbian : " + stujiating2.getYoubian());
stujiatinginfoDao.saveStujiatinginfo(stujiating2);
log.debug("保存学生家庭信息成功");

测试代码:
@Test
public void testPutStudent() throws MyException {
StudentAll student = new StudentAll();
Stujiatinginfotb stujiatinginfo = new Stujiatinginfotb();
student.setStujiatinginfo(stujiatinginfo);

student.setName("zhangsan");
student.setSno("901");

boolean b = teacherService.putStudent(student);

System.out.println("return : " + b);
}

------解决思路----------------------
加Q。可远程
  相关解决方案