Ассоциативное табличное отображение спящего режима

1

Я получаю ошибку сопоставления, и мне нужна помощь, чтобы найти проблему.

У меня есть две таблицы (TBLAUCTIONHEADER и TBLUSER). Я добавил третью таблицу, чтобы связать пользователей с аукционистами (TBLAUCTIONHEADERUSER). Эта третья таблица имеет только два столбца (userid и auctionheaderid), которые являются внешними ключами идентификаторов таблиц tblauctionheader и tbluser.

Я сопоставил его в 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".

Кто-нибудь знает, что я могу сделать неправильно?

Теги:
database
hibernate
hibernate-mapping

1 ответ

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>

И это была проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню