I have two entities that are sharing a primary key using @PrimaryKeyJoinColumn. When the schema is created with hbm2ddl, no foreign key constraint is add. Is there an extra annotation that I need to use to get the constraint generated? I'm using Seam 2.0.0.GA on JBoss 4.2.2.GA. My Hibernate dependencies look like this:
[INFO] +- org.hibernate:hibernate:jar:3.2.4.sp1:provided [INFO] | +- javax.transaction:jta:jar:1.0.1B:provided [INFO] | +- asm:asm-attrs:jar:1.5.3:provided [INFO] | +- antlr:antlr:jar:2.7.6:provided [INFO] | +- cglib:cglib:jar:2.1_3:provided [INFO] | \- asm:asm:jar:1.5.3:provided [INFO] +- org.hibernate:hibernate-annotations:jar:3.3.0.ga:provided [INFO] +- org.hibernate:hibernate-entitymanager:jar:3.3.1.ga:provided [INFO] | +- org.hibernate:hibernate-commons-annotations:jar:3.0.0.ga:provided [INFO] | \- jboss:jboss-common-core:jar:2.0.4.GA:provided [INFO] +- org.hibernate:hibernate-validator:jar:3.0.0.GA:provided
@Entity @Name( "user" ) @Scope( SESSION ) @Table( name = "WEB_USER" ) public class User implements Serializable { private String id; private Profile profile; @Id @NotNull @GeneratedValue( strategy = GenerationType.AUTO ) @Column( name = "WEB_USER_ID" ) public String getId() { return id; } public void setId( String id ) { this.id = id; } @OneToOne( cascade = CascadeType.ALL ) @PrimaryKeyJoinColumn public Profile getProfile() { return profile; } public void setProfile( Profile profile ) { this.profile = profile; } }
@Entity @Name( "profile" ) @Table( name = "WEB_USER_PROFILE" ) public class Profile implements Serializable { private String id; @Id @Column( name = "WEB_USER_ID", nullable = false ) public String getId() { return id; } public void setId( String id ) { this.id = id; } }