Hi, HSQLDB does not seem to allow identical unique constraint names in different tables. On the contrary, MySQL allows. For example, MySQL will create following unique constraints on table A and B with the same name UNQ_uniqueValue as per the reported use case when both A.java and B.java are annotated as @Table([EMAIL PROTECTED](columnNames={"uniqueValue"})})
CREATE TABLE A (id BIGINT NOT NULL, uniqueValue INTEGER NOT NULL, PRIMARY KEY (id), UNIQUE UNQ_uniqueValue (uniqueValue)) and CREATE TABLE B (id BIGINT NOT NULL, uniqueValue INTEGER NOT NULL, PRIMARY KEY (id), UNIQUE UNQ_uniqueValue (uniqueValue)) The use case when ran against HSQLDB the schema generation DDL were: CREATE TABLE A (id BIGINT NOT NULL, uniqueValue INTEGER NOT NULL, PRIMARY KEY (id), CONSTRAINT UNQ_uniqueValue UNIQUE (uniqueValue)) and CREATE TABLE B (id BIGINT NOT NULL, uniqueValue INTEGER NOT NULL, PRIMARY KEY (id), CONSTRAINT UNQ_uniqueValue UNIQUE (uniqueValue)) which failed because "Constraint already exists: UNQ_UNIQUEVALUE in statement [CREATE TABLE B ..." However, the unique constraint name was indeed created from the column name 'uniqueValue' which is different from what you have reported as "...CONSTRAINT UNQ_externalRef UNIQUE (uniqueValue)...". Not sure where and how the name "UNQ_externalRef" is being generated. But if the actual column name is used for creating the name of the constraint then a workaround will be to map A.uniqueValue and B.uniqueValue to differently named columns in the database. Claudio Romano-2 wrote: > > Hi all, > > I'm using openjpa version 1.2.0 with HSQLDB and I have a verty nasty > problem using schema generator with unique constraints. > > I have to classes to persist: > > public class UniqueA { > ... > > private int uniqueValue; > > } > > public class UniqueB { > ... > > private int uniqueValue; > } > > > The property uniqueValue should be unique for both classes. > The first thing I used was the @Column annotation: > @Column(name="uniqueValue", unique = true) > > The schema generator generates follow sql statement > ...CONSTRAINT UNQ_ UNIQUE (uniqueValue).. > > as soon openjpa generates the second constraint, it will fail because > the constraint name is not unique. > > > > The second try was with the @Table annotation: > "@Table( uniqueConstraints= [EMAIL PROTECTED](columnNames= > {"uniqueValue"})})" > > The schema generator generates following sql statement: > ...CONSTRAINT UNQ_externalRef UNIQUE (uniqueValue)... > > same as before, as soon openjpa generates the second constraint, it will > fail because the constraint name is not unique. > > > This is my openjpa.jdbc.SynchronizeMappings: > openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true, > Indexes=true) > > > So i finally have no solution the let openjpa generate the correct > schema. What do I do wrong? > > Thank! > Claudio > > -- View this message in context: http://n2.nabble.com/Schema-generation-with-unique-constraints-tp1469373p1470609.html Sent from the OpenJPA Users mailing list archive at Nabble.com.