Как создать файл сопоставления для упорядоченного списка в Hibernate? - PullRequest
3 голосов
/ 21 ноября 2010

У меня есть простая модель Java, в которой ListHolder содержит List, который в свою очередь может содержать объекты ListHolder:

public class ListHolder {
    private List<ListHolder> list;
}

Мой подход к файлу отображения Hibernate выглядит следующим образом:

<class name="ListHolder" table="tListHolder">
    <id column="id" type="int">
        <generator class="native"/>
    </id>
    <list name="list" access="field" cascade="all">
        <key column="parent" not-null="true"/>
        <index column="elementIndex"/>
        <one-to-many class="ListHolder" />
    </list>
</class>

Когда я использую вышеупомянутое с Hibernate 3.0, я получаю следующее исключение:

Exception in thread "main" org.hibernate.HibernateException: 
Unable to instantiate default tuplizer 
[org.hibernate.tuple.entity.PojoEntityTuplizer]
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(
  EntityTuplizerFactory.java:110)

Я делаю что-то не так в файле сопоставления?Есть ли лучший способ отобразить списки, которые работают?

Имеет ли смысл попробовать описанное выше с более свежей (3.6) версией Hibernate?

Ответы [ 2 ]

1 голос
/ 24 ноября 2010

Обновление до 3.6 ничего не изменило.Добавление javassist в CLASSPATH принесло больше полезных сообщений об ошибках.Оказалось, что другой член без установщика был виновником трассировки стека, и что отношение List на самом деле является отношением «многие ко многим».Следующее отображение теперь работает без недостатков:

<class name="ListHolder" table="tListHolder">
    <id name="id" column="fid" type="long" />
    <property name="name" column="fname" type="string" length="100" />
    <list name="list" access="field" cascade="all">
         <key column="parentId" />
         <index column="elementIndex"/>
         <many-to-many class="ListHolder"/>
    </list>
</class>
1 голос
/ 24 ноября 2010

Я не думаю, что 3,6 изменит результат.
У вас есть javassist.jar в вашем CP? иногда это помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...