一XML文件两个many to one映射带出的问题(hibernate)

表字段:idfather_idnamephotomanfather_idXML映射文件部分:<idname="id"column="id"type="int"><gene... 表字段:id father_id name photo manfather_id

XML映射文件部分:
<id name="id" column="id" type="int">
<generator class="increment"/>
</id>

<property name="name" column="name" type="string"/>
<property name="photo" column="photo" type="string"/>

<many-to-one name="fatherSort" column="father_id" class="mrgf.hibernate.MerchandiseSort" lazy="false"/>
<set name="sonSorts" cascade="all" lazy="false" inverse="true" order-by="id asc">
<key column="father_id"/>
<one-to-many class="mrgf.hibernate.MerchandiseSort"/>
</set>
<many-to-one name="manfatherSort" column="manfather_id" class="mrgf.hibernate.MerchandiseSort" lazy="false"/>
<set name="mansonSorts" cascade="all" lazy="false" inverse="true" order-by="id asc">
<key column="manfather_id"/>
<one-to-many class="mrgf.hibernate.MerchandiseSort"/>
</set>
出错的原因:我多加了个manfather_id字段,然后在XML映射文件里加入了
<many-to-one name="manfatherSort" column="manfather_id" class="mrgf.hibernate.MerchandiseSort" lazy="false"/>
<set name="mansonSorts" cascade="all" lazy="false" inverse="true" order-by="id asc">
<key column="manfather_id"/>
<one-to-many class="mrgf.hibernate.MerchandiseSort"/>
</set>
就会出现org.hibernate.exception.SQLGrammarException:could not execute query的异常
Caused by:java.sql.SQLException:...列名"manfatherSort"无效
自己的分析:get/set等我都做好了,难道是一个XML文件中不能存在两个many to one映射?还是one to many那指向了同一个class所以出错了么?但也没理由说"manfatherSort"那无效吧...望各位大大们给点意见,新手没分,祝参与的各位事业顺利好了,先谢谢大家的帮忙
发现问题的根本了,sql语句调用不了many to one里的字段啊,就是fatherSort和manfatherSort都不能用sql语句调用,注意,这两个字段的都是用表名声明的,问题知道了,可惜解决不了,我现在需要的是在sql语句里用manfatherSort这个属性做一个判断,不知道应该怎么才能用呢,例如:from xxx表 where manfatherSort is not null; 注意这里manfatherSort会报错,提示列名无效...

请问第二个回答者:
不要?那是我新增加的字段啊...我就是要怎么才能在hql语句里面使用manfatherSort(column="manfather_id")
展开
 我来答
chenyucode
2008-05-09 · TA获得超过108个赞
知道答主
回答量:54
采纳率:0%
帮助的人:54.6万
展开全部
当然列名无效了.!
<many-to-one name="manfatherSort" column="manfather_id" class="mrgf.hibernate.MerchandiseSort" lazy="false"/>
---这个根本就是多余的。可以不要。!
上面以经有一个SET了

<set name="sonSorts" cascade="all" lazy="false" inverse="true" order-by="id asc">
<key column="father_id"/>
<one-to-many class="mrgf.hibernate.MerchandiseSort"/>
</set>

HQL:
from XXX a where a.sonSorts is not null;
这样可以查出你想要的那个结果!!
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
huapeihua
2008-05-08 · TA获得超过1026个赞
知道小有建树答主
回答量:2590
采纳率:0%
帮助的人:1638万
展开全部
关注中..我也郁闷这个问题...有时碰到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式