hibernate中两个实体类与同一张数据表进行映射后出现的问题解决
来源:互联网 发布:最短路网络物流分配法 编辑:程序博客网 时间:2024/05/06 12:28
最近项目中遇到了一个子系统需要整合到它的父系统的问题,由于父系统和子系统的工程比较庞大 ,涉及到的class也是相当的多。最后不得已将其中比较关键的class对应的数据表进行了统一。那么就需要两个实体类映射到同一张数据表中。这两个实体类之间进行了继承(sobject extends fobject)。本以为这样就万事大吉了,可是没想到,在对其模块进行检索的时候问题出现了,其中父类所对应的模块检索出现了第一个问题,在执行query.setMaxResults()方法后,检索不到任何的记录。如果不执行此方法,则能够检索到数据表中的记录。但是,发现这样检索到的记录却是重复的,第二个问题出现了:其中不仅返回了所需要的对象(fobject)而且它的子类(sobject)也返回来了。后来,查了些资料才发现,自己忽略了一个问题。就是配置文件中polymorphism属性的设置问题。polymorphism默认值为 implicit 是隐式的实现多态。
Implicit (隐式)的多态是指,如果查询中给出的是任何超类、该类实现的接口或者该类的名字,都会返回这个类的实例;如果查询中给出的是子类的名字,则会返回子类的实例。
Explicit (显式)的多态是指,只有在查询中给出的明确是该类的名字时才会返回这个类的实例;同时只有当在这个<class>的定义中作为<subclass>或者<joined-subclass>出现的子类,才会可能返回。 大多数情况下,默认的polymorphism="implicit"都是合适的。 显式的多态在有两个不同的类映射到同一个表的时候很有用。(允许一个“轻型”的类,只包含部分表字段)。
这样我就明白了,我需要更改这两个class对应的映射文件把polymorphism属性设置为explicit。这样这两个问题就解决了,程序能够从数据库中检索到记录并返回了我所需要的对象。但是,第一个问题暂时还没有弄清楚,为什么之前隐式的实现多态的话,执行query.setMaxResults()方法之后,会检索不到任何记录。以后有时间我再细细研究吧。同时也希望各位大侠如果遇到类似的问题话,能给我解释一下。
网络资料收集:
http://java.ccidnet.com/html/document/hibernate_doc.html
http://www-128.ibm.com/developerworks/cn/java/j-hibernate/index.html
Implicit (隐式)的多态是指,如果查询中给出的是任何超类、该类实现的接口或者该类的名字,都会返回这个类的实例;如果查询中给出的是子类的名字,则会返回子类的实例。
Explicit (显式)的多态是指,只有在查询中给出的明确是该类的名字时才会返回这个类的实例;同时只有当在这个<class>的定义中作为<subclass>或者<joined-subclass>出现的子类,才会可能返回。 大多数情况下,默认的polymorphism="implicit"都是合适的。 显式的多态在有两个不同的类映射到同一个表的时候很有用。(允许一个“轻型”的类,只包含部分表字段)。
这样我就明白了,我需要更改这两个class对应的映射文件把polymorphism属性设置为explicit。这样这两个问题就解决了,程序能够从数据库中检索到记录并返回了我所需要的对象。但是,第一个问题暂时还没有弄清楚,为什么之前隐式的实现多态的话,执行query.setMaxResults()方法之后,会检索不到任何记录。以后有时间我再细细研究吧。同时也希望各位大侠如果遇到类似的问题话,能给我解释一下。
网络资料收集:
http://java.ccidnet.com/html/document/hibernate_doc.html
http://www-128.ibm.com/developerworks/cn/java/j-hibernate/index.html
- hibernate中两个实体类与同一张数据表进行映射后出现的问题解决
- hibernate两个实体类映射数据库中的同一张表,保错
- hibernate实体类与数据表映射的两种方式
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- Snail—实体类与数据表的映射文件
- SQL数据表两个字段关联同一张数据表
- 两个事物 update同一张表出现的死锁问题
- 由数据表生成hibernate映射文件和实体类
- Hibernate--实体类与表映射01
- Hibernate两个属性映射同一字段
- hibernate实体类映射
- hibernate实体类映射不到的问题
- Hibernate实体类与数据表字段默认值之间的优先关系
- 对需要映射实体类的项目 进行 hibernate 方面的支持
- 更改hibernate的映射的实体类后,一定要更新数据库
- eclipse数据表映射为实体类
- 想找一份关于软件的工作.
- 数据防泄密“五不”安全方案推荐
- 我的电脑图标变了?原来是Trojan-Downloader.Win32.Agent.mkj替换了explorer.exe1
- 滚动周计算收益率的SQL
- vb的CommonDialog控件的使用
- hibernate中两个实体类与同一张数据表进行映射后出现的问题解决
- 莫使金撙空对月,酒浇心头解千愁。
- 通用投票器-免费通用自动投票器-免费下载使用
- 三国之见龙卸甲-电影之感
- 精通语言不等于是一个好的软件开发人员
- 印象巴黎[一]——艾菲尔
- 对旧金山火炬传递的奇怪方式的深层次分析:美国是赢家(转)
- JavaScript从入门到精通:Web页面信息交互
- msn 修改密码,msn 改密码的方法