[hibernate-issues] [Hibernate-JIRA] Created: (HHH-4595) DDL export generates FK constraint before the essential unique constraint, and fails
Chris Wilson (JIRA)
noreply at atlassian.com
Fri Nov 20 10:40:08 EST 2009
DDL export generates FK constraint before the essential unique constraint, and fails
------------------------------------------------------------------------------------
Key: HHH-4595
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4595
Project: Hibernate Core
Issue Type: Bug
Components: annotations
Affects Versions: 3.3.2
Environment: Core 3.3.2, with Annotations 3.4.0, on MySQL 5.0.51a-3ubuntu5.4.
Reporter: Chris Wilson
Attachments: HibernateJoinPropertyRefMultipleColumnsFails.java
With the attached test case, which defines some classes and tries to generate the DDL for them, Hibernate tries to generate the foreign key constraint before the unique constraint:
create table user_roles (id integer not null, role varchar(255), user_name varchar(255), project_id integer, site_id integer not null, primary key (id))
...
alter table user_roles add constraint FK73429949AACF5CB1 foreign key (project_id, site_id) references project_site (project_id, site_id)
MySQL doesn't allow this, generating the following error:
"Constraint 'FK73429949AACF5CB1' is invalid: there is no unique or primary key constraint on table '"ROOT"."PROJECT_SITE"' that matches the number and types of the columns in the foreign key."
And indeed there is none, because Hibernate hasn't added it yet:
create table project (id integer not null, primary key (id))
create table project_site (id integer not null, project_id integer, site_id integer, primary key (id))
create table site (id integer not null, primary key (id))
create table user_roles (id integer not null, role varchar(255), user_name varchar(255), project_id integer, site_id integer not null, primary key (id))
alter table project_site add constraint FK380054AD6E971B37 foreign key (project_id) references project
alter table project_site add constraint FK380054AD6E3AE95D foreign key (site_id) references site
alter table user_roles add constraint FK73429949AACF5CB1 foreign key (project_id, site_id) references project_site (project_id, site_id)
16:27:35,834 ERROR SchemaExport: schema export unsuccessful
org.hibernate.JDBCException: Error during DDL export
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:345)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:262)
at org.wfp.rita.datafacade.HibernateJoinPropertyRefMultipleColumnsFails.test(HibernateJoinPropertyRefMultipleColumnsFails.java:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException: Constraint 'FK73429949AACF5CB1' is invalid: there is no unique or primary key constraint on table '"ROOT"."PROJECT_SITE"' that matches the number and types of the columns in the foreign key.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list