Список типов свойств Hiberante, добавьте его через sql в таблицу - PullRequest
1 голос
/ 30 июня 2010

Я недавно добавил новое свойство в один класс, его свойство list, и я написал xml mapping для этого свойства, по нескольким причинам, я не собираюсь удалять базу данных или использовать опцию create в файле конфигурации hibernate для обновления изменений.Я должен сделать это вручную, выполнив SQL-запросы к базе данных.

Файл отображения xml:

<list name="items" table="ITEM_ITEM_GROUP" lazy="false" cascade="save-update">
    <key column="ITEM_GROUP_ID"></key>
    <list-index column="IG_INDEX" />            
    <many-to-many column="ITEM_ID" class="Item" />
</list>

Может кто-нибудь помочь, пожалуйста, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Вы не просто добавляете столбец, вы добавляете таблицу.

Самый простой подход - использовать SchemaExport для создания сценария sql вашей схемы базы данных. Затем вы можете скопировать и вставить новую таблицу с индексами и всем прочим.

В этом случае вам, скорее всего, не нужно менять существующую таблицу, просто добавьте новую.

В Java вы можете вызывать SchemaExport напрямую из командной строки. Взгляните на учебник, как это здесь .

В C # вам нужно написать утилиту, которая экспортирует схему, код выглядит примерно так:

var schemaExport = new SchemaExport(configuration);
schemaExport                    
  .Execute(
    false,
    false,
    false,
    null,
    fileStream);

В основном это будет примерно так (в зависимости от используемых вами rdms)

create table ITEM_ITEM_GROUP(
  ITEM_GROUP_ID int not null,
  IG_INDEX int not null,
  ITEM_ID int,
  primary key (ITEM_GROUP_ID, IG_INDEX)
)

alter table ITEM_ITEM_GROUP
    add constraint FKXXXX
    foreign key (ITEM_GROUP_ID) 
    references YOUR_ENTITY

alter table ITEM_ITEM_GROUP
    add constraint FKXXXX
    foreign key (ITEM_ID) 
    references ITEM

Я, наверное, что-то пропустил. Поэтому лучше всего позволить Hibernate создать схему и изучить сгенерированный SQL.

1 голос
/ 30 июня 2010

То есть вы просто хотите добавить этот столбец в таблицу? Используйте оператор ALTER TABLE:

ALTER TABLE table_name
ADD column_name datatype

См. http://w3schools.com/sql/sql_alter.asp

...