Loading...

java .net

难道是hibernate装聪明?

今天开发中遇到一个奇怪的hibernate错误
我的数据库中一个表中有个字段名叫id,但是它并不是主键
用hibernate映射后为

XML语言:
1 <id name="apprId" type="java.lang.Long">
2     <column name="APPR_ID" precision="11" scale="0" />
3     <generator class="assigned" />
4 </id>
5 <property name="Id" type="java.lang.Long">
6     <column name="ID" precision="11" scale="0" />
7 </property>
而我当执行这样的hibernate的HQL的时候
SQL语言:
1 from RcUApprInfo as model where model.Id = ?

hibernate解析成sql语句竟然是
SQL语言:
1 select ...... from rc_u_appr_info where as model where model.APPR_ID = ?

跟踪了好几遍,都是这样

在确定自己的代码没问题后,想到可能是hibernate理解错了
于是将Id改成了别的名
再试,竟然没问题了
难道hibernate将凡是叫Id的都认为成主键??不解 不解

posted on 2008-09-04 16:33 阅读(1113) 评论(7)  编辑  收藏

评论

# re: 难道是hibernate装聪明? 2008-09-04 17:55 xx

你猜对了  回复  更多评论   

# re: 难道是hibernate装聪明? 2008-09-04 20:42 lai

可能是设置了where条件,你看下hbm  回复  更多评论   

# re: 难道是hibernate装聪明? 2008-09-05 10:03 Lancelot

明明是你自己不符合业界的使用习惯,还埋怨Hibernate。
不过我可以负责人的告诉你,Hibernate是不会犯这种弱智错误的,因为Hibernate是知道哪个属性是你作为Identity的。  回复  更多评论   

# re: 难道是hibernate装聪明? 2008-09-05 10:43

@Lancelot
我没有符合业界的使用习惯,我认真承认,当时数据库字段设计有些随意
但您“不过我可以负责人的告诉你,Hibernate是不会犯这种弱智错误的,因为Hibernate是知道哪个属性是你作为Identity的。”
事实胜于雄辩
它真的这么发生了  回复  更多评论   

# re: 难道是hibernate装聪明? 2008-09-05 10:44

@lai
hbm配置文件都是用MyEclipse自动映射生成的,没有添加任何where条件
感谢回复  回复  更多评论   

# re: 难道是hibernate装聪明?[未登录] 2008-09-05 15:49 soleghost

coc思想  回复  更多评论   

# re: 难道是hibernate装聪明? 2008-09-05 16:32

coc思想是啥  回复  更多评论   


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      



公告

希望有一天

我能用鼠标双击我的钱包

然后选中一张100元

按住“ctrl+c”

接着不停的“ctrl+v”

嘻嘻~~~笑醒~~~




Get paid for your opinions! Click on the banner above to join Planet Pulse. Its totally free to sign up, and you can earn UNLIMITED. Find out more by visiting PLANET PULSE.

任务中国 taskcn.com

导航

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(5)

随笔分类(63)

随笔档案(359)

文章分类

文章档案(10)

有趣网络

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜