Как отобразить объединяемую таблицу с дополнительными столбцами + таблица-столбец как часть идентификатора? - PullRequest
1 голос
/ 01 июля 2011

я использую промежуточный объектный класс для сопоставления дополнительных столбцов с объединяемой таблицей.

SQL:

 CREATE TABLE backlogaufgabe
 (
   id serial NOT NULL,
   id_backlog integer NOT NULL,
   id_aufgabe integer NOT NULL,
   revision integer NOT NULL,
   datum date NOT NULL,
   rang integer NOT NULL,
   aufw_schaetzung integer,
   aufw_messung integer,
   CONSTRAINT backlogaufgabe_pkey PRIMARY KEY (id),
   CONSTRAINT backlogaufgabe_id_aufgabe_fkey FOREIGN KEY (id_aufgabe)
       REFERENCES aufgabe (id) MATCH SIMPLE
       ON UPDATE CASCADE ON DELETE RESTRICT,
   CONSTRAINT backlogaufgabe_id_backlog_fkey FOREIGN KEY (id_backlog)
       REFERENCES backlog (id) MATCH SIMPLE
       ON UPDATE CASCADE ON DELETE RESTRICT
 )
 WITH (
   OIDS=FALSE
 );

public static class Id implements Serializable {
    /** fkey Backlog. */
    private int backlogId;
    /** fkey Aufgabe. */
    private int aufgabeId;
    /** fkey Revision. */
    private int revisionId;

    /** Default-Konstruktor. */
    public Id() { }

    /**
     * Konstruktor - Both Id.
     *
     * @param pAufgabeId Die Aufgaben-Id
     * @param pBacklogId Die Backlog-Id
     */
    public Id(final int pBacklogId, final int pAufgabeId,
            final int pRevisionId) {
        this.backlogId = pBacklogId;
        this.aufgabeId = pAufgabeId;
        this.revisionId = pRevisionId;
    }

    @Override
    public final boolean equals(final Object obj) {
        if (obj != null && obj instanceof Id) {
            Id that = (Id) obj;
            return (this.backlogId == that.backlogId
                    && this.aufgabeId == that.aufgabeId
                    && this.revisionId == that.revisionId);
        } else {
            return false;
        }
    }

    @Override
    public final int hashCode() {
        return this.backlogId + this.aufgabeId + this.revisionId;
    }
}

public class BacklogAufgabe {
    private Id id = new Id();
    private Backlog backlog;
    private Aufgabe aufgabe;
    private int revision;
    private java.sql.Date datum;
    private int rang;
    private int aufwSchaetzung;
    private int aufwMessung;

    /** Default-Konstruktor. */
    public BacklogAufgabe() { }

    ....
    ....

}

Id-класс генерирует Id в виде составного идентификатора из 3 значений, fkeys из обеих таблиц + 1 значение из класса, который является и должен быть избыточным.

Мой вопрос: как мне правильно сопоставить это с XML? Я думаю, что сопоставление составного идентификатора не является проблемой, но я могу только один раз отобразить «ревизию» 3-го значения в файле сопоставления, я не нашел ничего, что помогло бы мне с этой проблемой ...

Вот моя настоящая попытка картирования:

<hibernate-mapping package="app.domain">
 <class mutable="false" name="app.domain.BacklogAufgabe" table="backlogaufgabe">
  <composite-id class="BacklogAufgabe$Id" name="id">
   <key-property access="field" column="id_backlog" name="backlogId"/>
   <key-property access="field" column="id_aufgabe" name="aufgabeId"/>
   <key-property access="field" column="revision" name="revisionId"/>
  </composite-id>
  <property column="datum" name="datum" not-null="true" type="date"/>
  <property column="rang" name="rang" not-null="true" type="int"/>

  <property column="revision" name="revision" not-null="true" type="int"/>

  <property column="aufw_schaetzung" name="aufwSchaetzung" not-null="true" type="int"/>
  <property column="aufw_messung" name="aufwMessung" not-null="true" type="int"/>
  <many-to-one cascade="save-update" column="id_aufgabe" insert="false" lazy="false"
    name="aufgabe" not-null="true" update="false"/>
  <many-to-one cascade="save-update" column="id_backlog" insert="false" lazy="false"
    name="backlog"  not-null="true" update="false"/>
  <many-to-one cascade="save-update" column="revision" insert="false" lazy="false"
    name="revision" not-null="true" update="false"/>
 </class>
</hibernate-mapping>

Итак, если кто-нибудь знает, как сопоставить эту sql-таблицу с 3 значениями составного идентификатора "fkey1, fkey2," value-from-the-class ", сохраняя при этом отображение свойства для" value-from- the-class "Буду благодарен за любые советы и ответы.

Другими словами, как можно отобразить столбец как часть составного ключа и как обычное свойство, оба вместе в одном отображении?

Спасибо за помощь.

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