This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 1b0e61cdf70104f7012c6974d3c0728c69983985 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Mon Mar 2 09:48:34 2026 -0600 refactor isValidHibernateOneToOne and isValidHibernateManyToOne --- .../domainbinding/binder/GrailsPropertyBinder.java | 2 +- .../cfg/domainbinding/binder/ManyToOneBinder.java | 2 +- .../hibernate/HibernateManyToOneProperty.java | 8 ++++++++ .../hibernate/HibernateOneToOneProperty.java | 10 ++++++++++ .../hibernate/HibernatePersistentProperty.java | 4 ++-- .../hibernate/HibernateToOneProperty.java | 13 ------------- .../cfg/GrailsHibernatePersistentPropertySpec.groovy | 8 ++++---- .../cfg/domainbinding/ComponentBinderSpec.groovy | 20 ++++++++++---------- .../domainbinding/GrailsPropertyBinderSpec.groovy | 4 ++-- .../cfg/domainbinding/ManyToOneBinderSpec.groovy | 2 +- 10 files changed, 39 insertions(+), 34 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java index 63e5c95542..4d949b2746 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java @@ -79,7 +79,7 @@ public class GrailsPropertyBinder { value = enumTypeBinder.bindEnumType(currentGrailsProp, currentGrailsProp.getType(), table, path); } else if (currentGrailsProp instanceof HibernateToOneProperty toOne) { - if (toOne.isHibernateOneToOne()) { + if (toOne.isValidHibernateOneToOne()) { value = oneToOneBinder.bindOneToOne( (org.grails.datastore.mapping.model.types.OneToOne) toOne, diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java index f0cde199da..9dd8fe4f9f 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java @@ -136,7 +136,7 @@ public class ManyToOneBinder { c.setUnique(config.isUnique()); } else if (property.isBidirectional() && property.getHibernateInverseSide() instanceof HibernateToOneProperty inverseSide - && inverseSide.isHibernateOneToOne()) { + && inverseSide.isValidHibernateOneToOne()) { c.setUnique(true); } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateManyToOneProperty.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateManyToOneProperty.java index dacd497b16..97cfb69171 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateManyToOneProperty.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateManyToOneProperty.java @@ -21,6 +21,7 @@ package org.grails.orm.hibernate.cfg.domainbinding.hibernate; import java.beans.PropertyDescriptor; import org.grails.datastore.mapping.model.MappingContext; import org.grails.datastore.mapping.model.PersistentEntity; +import org.grails.datastore.mapping.model.types.OneToOne; import org.grails.datastore.mapping.model.types.mapping.ManyToOneWithMapping; import org.grails.orm.hibernate.cfg.PropertyConfig; @@ -36,4 +37,11 @@ public class HibernateManyToOneProperty extends ManyToOneWithMapping<PropertyCon public GrailsHibernatePersistentEntity getHibernateAssociatedEntity() { return (GrailsHibernatePersistentEntity) super.getAssociatedEntity(); } + + + + public boolean isValidHibernateManyToOne() { + validateAssociation(); + return true; + } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateOneToOneProperty.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateOneToOneProperty.java index d0a70f13cb..2328fe1707 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateOneToOneProperty.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateOneToOneProperty.java @@ -48,4 +48,14 @@ public class HibernateOneToOneProperty extends OneToOneWithMapping<PropertyConfi public GrailsHibernatePersistentEntity getHibernateAssociatedEntity() { return (GrailsHibernatePersistentEntity) super.getAssociatedEntity(); } + + public boolean isValidHibernateOneToOne() { + validateAssociation(); + return canBindOneToOneWithSingleColumnAndForeignKey() || isHasOne() && isBidirectional() && getInverseSide() != null; + } + + public boolean isValidHibernateManyToOne() { + validateAssociation(); + return !isValidHibernateOneToOne(); + } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentProperty.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentProperty.java index aadca583b7..8c114539e0 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentProperty.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentProperty.java @@ -129,11 +129,11 @@ public interface HibernatePersistentProperty extends PersistentProperty<Property return Optional.ofNullable(getType()).map(Class::isEnum).orElse(false); } - default boolean isHibernateOneToOne() { + default boolean isValidHibernateOneToOne() { return false; } - default boolean isHibernateManyToOne() { + default boolean isValidHibernateManyToOne() { return false; } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToOneProperty.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToOneProperty.java index 27029a3e8b..f301a3ee95 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToOneProperty.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToOneProperty.java @@ -26,18 +26,5 @@ import org.grails.datastore.mapping.model.types.OneToOne; */ public interface HibernateToOneProperty extends HibernateAssociation { - default boolean isHibernateOneToOne() { - validateAssociation(); - return this instanceof OneToOne association - && (association.canBindOneToOneWithSingleColumnAndForeignKey() - || (association.isHasOne() - && association.isBidirectional() - && association.getInverseSide() != null)); - } - default boolean isHibernateManyToOne() { - validateAssociation(); - return this instanceof org.grails.datastore.mapping.model.types.ManyToOne - || (this instanceof OneToOne && !isHibernateOneToOne()); - } } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentPropertySpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentPropertySpec.groovy index ed651ee9bb..807269233a 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentPropertySpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentPropertySpec.groovy @@ -107,10 +107,10 @@ class GrailsHibernatePersistentPropertySpec extends HibernateGormDatastoreSpec { HibernatePersistentProperty manyToOneProp = (HibernatePersistentProperty) entity.getPropertyByName("manyToOne") expect: - oneToOneProp.isHibernateOneToOne() - !oneToOneProp.isHibernateManyToOne() - !manyToOneProp.isHibernateOneToOne() - manyToOneProp.isHibernateManyToOne() + oneToOneProp.isValidHibernateOneToOne() + !oneToOneProp.isValidHibernateManyToOne() + !manyToOneProp.isValidHibernateOneToOne() + manyToOneProp.isValidHibernateManyToOne() } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy index bd65b66b03..52d939a864 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy @@ -111,15 +111,15 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { embeddedProp.getOwner() >> Mock(GrailsHibernatePersistentEntity) { getJavaClass() >> MyEntity } - embeddedProp.isHibernateOneToOne() >> false - embeddedProp.isHibernateManyToOne() >> false + embeddedProp.isValidHibernateOneToOne() >> false + embeddedProp.isValidHibernateManyToOne() >> false associatedEntity.getName() >> "Address" def prop1 = Mock(TestSimple) prop1.getName() >> "street" prop1.getType() >> String - prop1.isHibernateOneToOne() >> false - prop1.isHibernateManyToOne() >> false + prop1.isValidHibernateOneToOne() >> false + prop1.isValidHibernateManyToOne() >> false associatedEntity.getHibernateParentProperty(MyEntity) >> Optional.empty() associatedEntity.getHibernatePersistentProperties(MyEntity) >> [prop1] @@ -152,8 +152,8 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { embeddedProp.getOwner() >> Mock(GrailsHibernatePersistentEntity) { getJavaClass() >> MyEntity } - embeddedProp.isHibernateOneToOne() >> false - embeddedProp.isHibernateManyToOne() >> false + embeddedProp.isValidHibernateOneToOne() >> false + embeddedProp.isValidHibernateManyToOne() >> false associatedEntity.getName() >> "Address" def idProp = Mock(org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateIdentityProperty) @@ -163,8 +163,8 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { def normalProp = Mock(TestSimple) normalProp.getName() >> "street" normalProp.getType() >> String - normalProp.isHibernateOneToOne() >> false - normalProp.isHibernateManyToOne() >> false + normalProp.isValidHibernateOneToOne() >> false + normalProp.isValidHibernateManyToOne() >> false associatedEntity.getIdentity() >> idProp associatedEntity.getHibernateParentProperty(MyEntity) >> Optional.empty() @@ -198,8 +198,8 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { embeddedProp.getOwner() >> Mock(GrailsHibernatePersistentEntity) { getJavaClass() >> MyEntity } - embeddedProp.isHibernateOneToOne() >> false - embeddedProp.isHibernateManyToOne() >> false + embeddedProp.isValidHibernateOneToOne() >> false + embeddedProp.isValidHibernateManyToOne() >> false associatedEntity.getName() >> "Address" def parentProp = Mock(TestSimple) diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy index 2989687ecb..e41830b042 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy @@ -259,8 +259,8 @@ class GrailsPropertyBinderSpec extends HibernateGormDatastoreSpec { def statusProp = Mock(TestSimpleEnum) setupProperty(statusProp, "status", new Mapping(), persistentEntity) statusProp.getType() >> java.util.concurrent.TimeUnit - statusProp.isHibernateOneToOne() >> false - statusProp.isHibernateManyToOne() >> false + statusProp.isValidHibernateOneToOne() >> false + statusProp.isValidHibernateManyToOne() >> false when: Value value = propertyBinder.bindProperty(rootClass, rootClass.table, EMPTY_PATH, null, statusProp, collector) diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy index 789054f2e7..6b368af0aa 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy @@ -128,7 +128,7 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec { propertyConfig.isUniqueWithinGroup() >> isUniqueWithinGroup property.isBidirectional() >> isBidirectional property.getHibernateInverseSide() >> inverseSide - inverseSide.isHibernateOneToOne() >> isInverseHasOne + inverseSide.isValidHibernateOneToOne() >> isInverseHasOne when: def result = binder.bindManyToOne(property, null, "/test")
