Hibernate处理同名实体的方法(映射文件)
来源:互联网 发布:linux查看所有用户名 编辑:程序博客网 时间:2024/05/22 04:48
题外:无奈公司当前进行的项目是多家公司合作开发,说实话这个项目的管理方很烂,烂到不负责任,连各家公司开发的规范化都不做统一,做为我们只拿到其中很小一部分的模块自然也发挥不了决定性和建设性的建议和解决方案,只能顺从别家公司,这种项目只看别人眼色,做的心里很不爽!可是老板只管挣钱根本不会管你项目里面到底会遇到哪些问题,他只管要结果!这不最大的问题出现了:
各家使用的是同一个数据库,各自都创建了Hibernate的实体映射文件,我在整合的过程中发现com.xxx.model.QBtable和com.yyy.model.QBtable重名,并且这样的映射不止一个。开始认为同名但是处于不同的包路径下不应该报错啊??于是拿着错误在网上查了资料,知道了错误的原因:Hibernate在处理HQL时,会先将其翻译成一条数据库能够识别的sql语句,翻译的依据当然是实体与数据库表之间的映射关系。那么针对我的配置,Hibernate根据HQL查询中的QBtable实体就不会唯一定位实体了。
幸好Hibernate提供了一个auto-import属性,当你不指定具体的实体时(只指定from QBtable),它会自动找到唯一的名为User的实体映射,将其补全为com.xxx.model.QBtable。这个属性加的位置是*.hbm.xml文件中<hibernate-mapping auto-import="false">,之后还要在HQL查询中使用实体的完整限定名,如from com.xxx.model.QBtable 或 from com.yyy.model.QBtable,这样就可以了。
总结,
当你的系统中确实要需要两个同名的实体时,我们需要做两件事:
1. 将这两个同名的实体的映射文件都要设置为auto-import="false";
2. 所有关于这两个实体的HQL,都需要明确指定其全限定名(如com.yyy.model.QBtable)
- Hibernate处理同名实体的方法(映射文件)
- hibernate引入装有实体类映射文件的配置方法
- Hibernate写实体映射方法
- NHibernate中处理同名实体的解决办法
- MyEclipse中生成Hibernate实体类及映射文件的方法
- Hibernate的实体类的映射文件配置
- hibernate查询结果映射到实体和map的方法
- Hibernate注解方式处理实体映射关系
- Hibernate同名不同包下的映射文件同时加载问题
- Hibernate auto-import属性 解决有同名实体的时候
- hibernate之实体类型到映射文件
- 【Hibernate】实体映射文件--标签了解
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
- Hibernate映射实体类自动导入方法
- hibernate中的实体类和实体关系映射文件必须遵循的原则
- hibernate中实体关联的注解写法(组件映射)
- 使用hibernate 的hql进行查询表名无效问题
- 自己做一款简易的chrome扩展--清除页面广告
- poj_3274 Gold Balanced Lineup(数字哈希)
- ci框架的轮播图
- CGDB显示汇编代码
- Hibernate处理同名实体的方法(映射文件)
- 平衡二叉树
- cocos2dx学习之路----第十四篇(内存管理机制)
- php魔术方法__get和__set详解
- HDOJ 2057 A + B Again(水题,基础)
- js 中this陷阱
- LeetCode 40. Combination Sum II
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- softmax 函数