Hibernate се опитва да създаде същия обект/таблица два пъти, когато се използва @TableGenerator - как да го избегнете?

Използвам хибернация с моето J2EE приложение, внедрено на JBoss 6.0. Моята база данни е Oracle 11i и Derby. За генериране на първичен ключ (работещ сериен идентификатор) използвам анотация @TableGenerator в един от моите обекти (PersonDTO) - като:

  @Entity
  @Table(name = "EDIS_PERSON")
  public class PersonDTO {
    @Id
    @TableGenerator(name="TABLE_GEN", 
                       table="EDIS_SEQUENCE", pkColumnName="SEQ_NAME",
                       valueColumnName="SEQ_COUNT", 
                       pkColumnValue="PERSON_ID", allocationSize = 5)
    @GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
    private long id; 
    .
    .
    .

И дефинирах необходимия обект за последователност - като:

@Entity
@Table(name = "EDIS_SEQUENCE")
public class EdmSequenceDTO {
    @Id
    private String SEQ_NAME;
    private long SEQ_COUNT;
    .
    .
    .

Всичко работи добре, що се отнася до генерирането на последователност. Но по време на създаването на обекти (когато за първи път внедрявам своето J2EE приложение), виждам следната грешка във файла JBoss server.log, въпреки че всичките ми обекти/таблици в крайна сметка се създават успешно.

14:04:16,817 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] Unsuccessful: create table EDIS_SEQUENCE ( SEQ_NAME varchar(255),  SEQ_COUNT integer ) 
14:04:16,817 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] Table/View 'EDIS_SEQUENCE' already exists in Schema 'EDM'.
14:04:16,818 INFO  [org.hibernate.tool.hbm2ddl.SchemaUpdate] schema update complete**

Вярвам, че това всъщност "не" е ГРЕШКА. Изглежда, че тъй като имам препратка към EDIS_SEQUENCE като част от 2 Entity beans, hibernate се опитва да го създаде два пъти. Първо, когато EdmSequenceDTO е разгърнат и второ, когато PersonDTO препраща към EDIS_SEQUENCE като част от @TableGenerator анотация.

В моя persistence.xml файл имам hibernate.hbm2ddl.auto свойство със стойност = "актуализация". Трябва да имам тази стойност вместо "create-drop".

Чудя се има ли някакъв начин да избегна грешката, докладвана от hibernate?


person javauser71    schedule 22.02.2011    source източник
comment
Никой не се е сблъсквал с тази грешка?? ха!!   -  person javauser71    schedule 24.02.2011


Отговори (1)


Ако все още не е решен - не трябва да картографирате таблицата EDIS_SEQUENCE към клас обект. Използва се вътрешно от hibernate.

person gkamal    schedule 11.10.2011