一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") 展开
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") 展开
展开全部
当然列名无效了.!
<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;
这样可以查出你想要的那个结果!!
<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 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询