Exactly the issues ! I'm using a 1.2.2. snapshot. Unfortunately, this code is for production, so, no trunk !
Thanks for the help. On Dec 13, 2009, at 09:41 , Miłosz Tylenda wrote: > Hi Jean-Baptiste, > > I can see two problems in the case you have described: > > 1. Unique constraints are being named by OpenJPA as "UNQ_" instead of > something like "UNQ_TABLE_COLUMN". > > 2. For most databases it is redundant or even incorrect for OpenJPA to create > unique constraints on primary keys. > > What OpenJPA version are you using? Unique constraint handling has been > reworked in the trunk (future 2.0.0) and 1.3.x branch but there is still room > for improvement. You are experiencing same or similar behaviour as described > in OPENJPA-756 and OPENJPA-1047 [1]. > > Greetings, > Milosz > > [1] http://issues.apache.org/jira/browse/OPENJPA-756 > http://issues.apache.org/jira/browse/OPENJPA-1047 > >> I found a workaround or a solution, depending if the behavior is a bug or >> not. >> >> This constraint was due to the following declaration in an abstract class >> all persistant classes inherits from : >> @Id >> @GeneratedValue(strategy = GenerationType.IDENTITY) >> @Column(nullable = false, unique = true) >> private Long id; >> >> Is it usefull to declare unique the primary key ? I guess it is at least >> redundant. >> I removed it and it works fine : >> @Id >> @GeneratedValue(strategy = GenerationType.IDENTITY) >> @Column(nullable = false) >> private Long id; >> >> >> One question is still there for OpenJPA : should the enhance process detect >> that redundancy ? Should it fails on error for that ? >> >> If yes, than it is a bug, if no, then it is a workaround :-) >> >> On Dec 11, 2009, at 18:22 , Jean-Baptiste BRIAUD -- Novlog wrote: >> >>> Hi the list, >>> >>> On my DEV machine I'm using MySQL, I use the MappingTool Ant task and its >>> all OK. >>> I produce the ddl sql file (for human reading) and also directly "inject" >>> the schema using the MappingTool to the database (not using the generated >>> sql file). >>> >>> On PROD, I have to deal with SQLServer. I amended the ant script in order >>> to connect using a URL specific to SQLServer. I rely on JTDS open source >>> SQLServer JDBC driver. >>> JDBC connection is fine, but I got an error on the SQL, I have to modify it >>> by hand to make it work. >>> >>> I didn't try to specify a "dialect" in the ant script, should I ? >>> If yes, how ? >>> >>> The error is on the constraint that are all named UNQ_ and it sound like a >>> problem for SQLServer. >>> CREATE TABLE A (id BIGINT NOT NULL AUTO_INCREMENT<...>, PRIMARY KEY (id), >>> UNIQUE UNQ_ (id)); >>> CREATE TABLE B (id BIGINT NOT NULL AUTO_INCREMENT<...>, PRIMARY KEY (id), >>> UNIQUE UNQ_ (id)); >>> >>> If I correct the sql by hand like the following, it works : >>> CREATE TABLE A (id BIGINT NOT NULL AUTO_INCREMENT<...>, PRIMARY KEY (id), >>> UNIQUE UNQ_1 (id)); >>> CREATE TABLE B (id BIGINT NOT NULL AUTO_INCREMENT<...>, PRIMARY KEY (id), >>> UNIQUE UNQ_2 (id)); >>> >>> I can't do it by hand for the real code for a lot of reason, I have to rely >>> on MappingTool. >>> >>> Any ideas ? >> >> >