Hibernate映射问题
来源:互联网 发布:2015汽车出口数据 编辑:程序博客网 时间:2024/05/16 07:40
这两天遇见一个hibernate的映射问题,虽然做过几个项目,但还是一不留神栽到这里,浪费了半天的时间。下面把这个问题记录一下。
当高高兴兴把配置弄好,方法写好运行的时候,爆出一个错:
org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: *****(这符号是类名,如com.it.User)
起初看到这个问题,心里想小CASE啦,于是把配置文件检查一边,class连接,都能够点过去了,再一运行,尼玛,还不行,拿着配置文件和实体改来改去还是不行.上网一看,有什么加entity,改.cfg文件,把cfg文件加入引用。
那么问题就来了,我的项目是SSH的,根本没有cfg文件,也没有使用entity注解,而是用的Sring。
后来发现一个负责映射扫描的文件,bean.xml
解决这个问题后,天啊,终于改变错误类型了,爆出个 detached entity passed to persist 持久化问题
这个问题比较简单了,大多数情况是检查ID 是否设置值与数据库自动增长的ID冲突
下面是网上摘录的,对错误原因分析的比较彻底:
病理特征:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.xxx.Xxx
简单地说,发生此异常即是一个游离的对象要被持久化(save)时,其ID既要ORM框架为它生成ID值,而此实体的ID却已然有值。对于新手容易出现此异常,但一些有经验的程序员有时也会碰到此问题,笔者就有一次,故与网友们“分享这次遭遇”。
让ORM为即将要持久的实体生成ID值(ORM的主键策略),是典型的做法,例如有自增长(即便是DBMS来做)、UUID,Hibernate框架则更多。因此,不能手工为此实体赋上ID值。笔者设计主要实体时,通常用UUID作主键,很显然它是字符型的。但是,有时会发现form表单为其赋一个长度为0的字符串,看html代码:
<input name="id" type="text" id="id" value=""/>
注意 value=""
如果是增加,则不需要在form表单中安置这么个控件,笔者通常将增加和修改实体在一个form表单中完成,笔者很喜欢用Spring MVC。这时id字段被Spring MVC包装到实体中就有值了(其值是长度为0的空字符串)。ORM保存时上面的异常就来了。解决的办法很多,笔者是为其实体做一个属性编辑器,在编辑器判断ID是否为空且长度是否为0,若是,则置入一个null。在保存前检查一下ID也是一种解决办法。
有时在一对一、一对多保存时,关联方也会存在这种情况,所以关键检查ID字段就可以了。
希望对大家有帮助。
- hibernate映射问题
- hibernate boolean映射问题
- hibernate映射问题
- Hibernate映射问题
- Hibernate count映射问题
- Hibernate映射问题
- hibernate createQuerySql 映射问题
- Hibernate映射问题
- Hibernate映射的问题
- hibernate 映射tinyint问题
- hibernate + oracle 映射主键问题
- Hibernate View视图映射问题
- Hibernate 映射字段问题[ImprovedNamingStrategy]
- Hibernate映射的关系问题
- Hibernate 映射字段问题[ImprovedNamingStrategy]
- hibernate映射的问题 (type)
- Hibernate异常--->关于Hibernate 映射当中的重复映射问题
- Hibernate中映射关系的问题
- 视图、索引、存储过程 、触发器、游标及事务
- OpenCV入门(三十三)-- 平均背景
- .Net程序员玩转Android开发---(4)注册页面布局
- SpringAMQP-从错误和代理错误中恢复
- HPUX 扩文件系统
- Hibernate映射问题
- Android 三种布局实现上下回弹效果(普通布局,ListView,ScrollView)
- .Net程序员玩转Android开发---(5)项目文件介绍
- vs2008快捷键及其相关技巧解说
- 我的CSDN博客声明
- .Net程序员玩转Android开发---(6)ListView显示数据
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- iOS Core Animation 简明系列教程
- ambari,hadoop本地源 部署http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26230811&id=4023821