[hibernate-dev] Mapping defaults for @OneToOne
Gail Badner
gbadner at redhat.com
Wed Dec 3 03:30:03 EST 2014
In both of the following cases, Hibernate creates a unique key constraint:
1) <many-to-one name="employee" column="employee_id" unique="true" not-null="true" />
2) <many-to-one name="employee" column="employee_id" unique="true" not-null="false" />
The documentation is clear that setting unique="true" indicates that a unique key constraint should be created.
I only see mappings for <many-to-one ... unique="true" not-null="true" > in the documentation.
Is the combination in 2) valid (unique="true" not-null="false")?
----- Original Message -----
> From: "Gail Badner" <gbadner at redhat.com>
> To: "hibernate-dev" <hibernate-dev at lists.jboss.org>
> Sent: Tuesday, December 2, 2014 9:34:24 PM
> Subject: [hibernate-dev] Mapping defaults for @OneToOne
>
> I'm a bit confused by the mapping defaults for @OneToOne defined in JPA 2.1.
>
> Sections 2.10.1 and 2.10.3.1 (Bidirectional and Unidirectional OneToOne
> Relationships) says, "The foreign key column has the same type as the
> primary key of table B and there is a unique key constraint on it."
>
> Section 11.1.41 (OneToOne Annotation) says that, by default, optional=true,
> which translates into nullable foreign key column(s).
>
> IIUC, the default mapping is not supported by many (all?) databases, because
> a constraint violation exception will be thrown if a column has a unique key
> constraint and there is more than one null value for that column.
>
> Currently, Hibernate does not create a unique key unless @OneToOne(
> optional=false ) is defined. I believe Hibernate is doing the right thing
> here, but it is not consistent with the spec.
>
> Is the spec wrong in this case, or am I missing something? Please let me
> know...
>
> Thanks,
> Gail
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
More information about the hibernate-dev
mailing list