Hibernate XML mapping - создайте новое поле за другим и добавьте его в ограничение нескольких столбцов

1

У меня проблема с отображением hibernate xml. Я хочу добавить новое поле "newField" в уже существующую схему db.

Я хочу вставить это поле за другим (размер в примере), И быть частью уникального ограничения по нескольким столбцам.

Отображение xml выглядит следующим образом:

<hibernate-mapping default-lazy="false" default-cascade="all" package="xxx">
<class name="A" table="As" discriminator-value="a">
    <id name="dbId" column="db_id" type="long">
        <generator class="IdentityGenerator"/>
    </id>
    <discriminator column="tag" type="string"/>        
    <property name="created" type="timestamp" insert="false" update="false" generated="insert"/>

    <properties name="key" unique="true">            
        <property name="name" column="name" type="string" not-null="true"/>            
        <property name="version" column="version" length="80" type="string"/>
    </properties>

<property name="size" column="size" type="long"/>
<property name="newField" column="new_field" type="long"/>

</class>

Если я добавлю свойство своего нового поля в многоколоночные "свойства", он будет создан два раза.

Вы знаете, есть ли у спящего режима способ сделать это?

Спасибо за вашу помощь

Джорис

Теги:
key
hibernate
mapping

2 ответа

1
Лучший ответ

Спасибо за ваш ответ @Sebri.

Я нашел решение, я просто заменил индекс уникальным ключом

<hibernate-mapping default-lazy="false" default-cascade="all" package="xxx">

<id name="dbId" column="db_id" type="long">
    <generator class="IdentityGenerator"/>
</id>
<discriminator column="tag" type="string"/>        
<property name="created" type="timestamp" insert="false" update="false" generated="insert"/>           
<property name="name" column="name" type="string" not-null="true" unique-key="key"/>            
<property name="version" column="version" length="80" type="string" unique-key="key"/>
<property name="size" column="size" type="long"/>
<property name="newField" column="new_field" type="long" unique-key="key"/>

0

Сначала вы можете использовать уникальный индекс

CREATE UNIQUE INDEX 'index_nom' ON 'As' ('name','version','new_field');

тогда

<property name="name" column="name" type="string" not-null="true" index="UNIQUE_IDX_KEY"/>            
<property name="version" column="version" length="80" type="string" index="UNIQUE_IDX_KEY"/>


<property name="newField" column="new_field" index="UNIQUE_IDX_KEY" />

Ещё вопросы

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