2 Replies Latest reply on Aug 20, 2007 12:36 PM by kumlali

    unique=true attribute of primary key in generated class prev

    kumlali Newbie

      Hi,

      Following steps cause "such unique or primary key already exists in the table" error. Although it smells like Hibernate Tools problem, I'm not sure whether it is directly related with Hibernate Tools or its improper usage. By the way, it may only happen in Oracle case.

      Am I missing something or should I create a Jira issue for this?

      Regards,

      Ali Sadik Kumlali

      -----------------------------

      - Create PEOPLE table using following script:

       CREATE TABLE PEOPLE (
       "ID" NUMBER NOT NULL,
       "SURNAME" VARCHAR2(50 BYTE),
       "NAME" VARCHAR2(25 BYTE),
       CONSTRAINT "PEOPLE_PK" PRIMARY KEY ("ID"));


      - Generate entities:

      c:\seam>seam generate-entities


      - Annotation of primary key column(ID) found in People.java should have "unique = true" attribute:

      @Id
      @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
      @NotNull
      public BigDecimal getId() {
       return this.id;
      }
      

      - Drop the PEOPLE table:

      DROP TABLE "PEOPLE" CASCADE CONSTRAINTS;


      - To force the schema to be generated from entity classes, deploy application:

      c:\seam\examples\people_sample>ant


      - Dig in the server logs. You should see an error:

      02:00:36,956 INFO [SchemaExport] Running hbm2ddl schema export
      02:00:36,959 INFO [SchemaExport] exporting generated schema to database
      02:00:37,215 ERROR [SchemaExport] Unsuccessful: create table PEOPLE (ID number(22,0) not null unique, NAME varchar2(25 char), SURNAME varchar2(50 char), primary key (ID))
      02:00:37,217 ERROR [SchemaExport] ORA-02261: such unique or primary key already exists in the table


      - Remove "unique=true" attribute from "@Column" annotation and compile/redeploy the application. You should see table PEOPLE is created and logs are fine.