关联表hibernate映射

时间:2014-05-22 21:26:29

标签: java database oracle hibernate hibernate-mapping

我收到了映射错误,我想帮助找到问题。

我有两张桌子( 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;已创建。

有谁知道我可能做错了什么?

1 个答案:

答案 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>

这就是问题所在。