我遇到映射错误,希望获得一些帮助以查找问题。
我有两个表(TBLAUCTIONHEADER和TBLUSER)。我添加了第三个表,以将用户与拍卖标头(TBLAUCTIONHEADERUSER)关联。第三个表只有两列(userid和Auctionheaderid),它们是tblauctionheader和tbluser表的ID的外键。
我通过以下方式将其映射到Auctionheader的hbm文件中:
<bag name="eventApprovers" table="TBLAUCTIONHEADERUSER" fetch="select" lazy="true">
<key column="AUCTIONHEADERID"/>
<many-to-many column="USERID" class="com.lalala.user.dataobject.User"/>
</bag>
我在AuctionHeader.java类中创建了一个列表:
//many-to-many
private List<User> eventApprovers;
在执行操作时,当我致电时aucHeader.getEventApprovers();
,我的日志中出现以下错误:
Exception: org.hibernate.exception.SQLGrammarException: could not initialize a collection: [com.lalala.auction.admin.dataobject.AuctionHeader.eventApprovers#12000]
和
Caused by: java.sql.SQLException: ORA-00904: "EVENTAPPRO0_"."AUCTIONHEADERID": invalid identifier
我不明白为什么/如何创建标识符“ EVENTAPPRO0 _”。“ AUCTIONHEADERID”。
有人知道我可能做错了什么吗?
我自己发现了问题。
我映射了错误的列名:
我设定的位置:
<bag name="eventApprovers" table="TBLAUCTIONHEADERUSER" fetch="select" lazy="true">
<key column="AUCTIONHEADERID"/>
<many-to-many column="USERID" class="com.lalala.user.dataobject.User"/>
</bag>
的key column
应该是HEADERID
,因此:
<bag name="eventApprovers" table="TBLAUCTIONHEADERUSER" fetch="select" lazy="true">
<key column="HEADERID"/>
<many-to-many column="USERID" class="com.lalala.user.dataobject.User"/>
</bag>
这就是问题所在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句