Hi, This is an unusual mapping. My gut feeling is that it is not a valid mapping, but I don't see anything in the spec that would indicate it is invalid.
Here is the mapping: @Entity public class Product { @Id @Column(name = "id") private int id; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "id", referencedColumnName = "productId", insertable = false, updatable = false) private ProductInfo productInfo; } @Entity public class ProductInfo{ @Id private int id; @Column(name = "productId", unique = true, updatable = false) private int productId; } Hibernate ignores referencedColumnName = "productId" and assumes that Product and ProductInfo share the same ID value. When the IDs are not the same, Product#productInfo will be null. It seem to me that the foreign key column should be ProductInfo#productId and should reference Product#id, but this doesn't make sense for a unidirectional one-to-one owned by Product. IMO, a bidirectional @OneToOne with ProductInfo owning the association would make more sense. A test case can be found at [1] Is the mapping invalid, or is this a bug in Hibernate? Thanks, Gail [1] https://github.com/gbadner/hibernate-test-case-templates/commit/d806d4ef5cf35da85efc51ce70c5e0648ce89006 _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev