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 阅读(1291) 评论(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”

嘻嘻~~~笑醒~~~



导航

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

统计

常用链接

留言簿(6)

随笔分类(102)

随笔档案(398)

文章分类

文章档案(10)

有趣网络

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜