我收到了映射错误,我想帮助找到问题。
我有两张桌子( 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
我不明白标识符&#34; EVENTAPPRO0 _&#34;。&#34; AUCTIONHEADERID&#34;&#34; AUCTIONHEADERID&#34;已创建。
有谁知道我可能做错了什么?
答案 0 :(得分:1)
我自己发现了这个问题。
我正在映射错误的列名:
我设置的位置:
<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>
这就是问题所在。