Hibernate генерирует POJO с равными - PullRequest
4 голосов
/ 26 марта 2010

Мы используем hibernate в новом проекте, где мы используем hibernate.reveng.xml для создания наших *.hbm.xml файлов и POJO после этого. Мы хотим использовать методы equals в каждом из наших POJO. Я обнаружил, что вы можете использовать <meta attribute="use-in-equals">true</meta> в ваших файлах hbm, чтобы отметить, какие свойства использовать в равных. Но это будет означать редактирование большого количества файлов, а затем повторное редактирование файлов в будущем, если / когда мы изменим таблицы или столбцы в нашей БД.

Поэтому мне было интересно, есть ли способ указать, какие свойства использовать в методе equals для каждого pojo (таблицы) в hibernate.reveng.xml файле?

Ответы [ 2 ]

6 голосов
/ 26 марта 2010

Это недокументированная функция (а DTD онлайн устарела), но вы можете добавить <meta> в элементы <table> и <colum>. Другими словами, вы должны быть в состоянии сделать это:

<table name="PROPERTY" catalog="DATA" schema="PUBLIC">
  <meta attribute="extends">BasicDataObject</meta>
  <meta attribute="scope-class">public abstract</meta>
  <column name="ID">
    <meta attribute="use-in-equals">true</meta>
    <meta attribute="use-in-tostring">true</meta>
  </column>
</table>

DTD в hibernate-tools.jar должен быть обновленным (и выглядеть как this ) и объявлять:

<!ELEMENT column (meta*) >

Об этом обсуждается на форумах Seam in Action.

2 голосов
/ 26 марта 2010

eclipse имеет генератор равных и хэш-кодов. Мы используем это для генерации этих методов.

...