diff --git a/core/src/main/java/org/hibernate/cfg/HbmBinder.java b/core/src/main/java/org/hibernate/cfg/HbmBinder.java index 306585c0fa..42ab755189 100644 --- a/core/src/main/java/org/hibernate/cfg/HbmBinder.java +++ b/core/src/main/java/org/hibernate/cfg/HbmBinder.java @@ -1621,7 +1621,9 @@ public static void bindManyToOne(Element node, ManyToOne manyToOne, String path, String cascade = node.attributeValue( "cascade" ); if ( cascade != null && cascade.indexOf( "delete-orphan" ) >= 0 ) { if ( !manyToOne.isLogicalOneToOne() ) { - throw new MappingException( "many-to-one attributes do not support orphan delete: " + path ); + throw new MappingException( + "many-to-one attribute [" + path + "] does not support orphan delete as it is not unique" + ); } } } @@ -1688,6 +1690,15 @@ public static void bindOneToOne(Element node, OneToOne oneToOne, String path, bo oneToOne.setPropertyName( node.attributeValue( "name" ) ); oneToOne.setReferencedEntityName( getEntityName( node, mappings ) ); + + String cascade = node.attributeValue( "cascade" ); + if ( cascade != null && cascade.indexOf( "delete-orphan" ) >= 0 ) { + if ( oneToOne.isConstrained() ) { + throw new MappingException( + "one-to-one attribute [" + path + "] does not support orphan delete as it is constrained" + ); + } + } } public static void bindOneToMany(Element node, OneToMany oneToMany, Mappings mappings)