This is an automated email from the ASF dual-hosted git repository.

matrei pushed a commit to branch fix/issue-16133
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 07a30bb3eb9d39ab64dd1121567ba025c1bff472
Author: Mattias Reichel <[email protected]>
AuthorDate: Fri Aug 14 08:32:40 2026 +0200

    fix: preserve bidirectional binding with nullable associations
---
 .../grails/datastore/mapping/config/AbstractGormMappingFactory.java    | 3 ++-
 .../src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy  | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/AbstractGormMappingFactory.java
 
b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/AbstractGormMappingFactory.java
index 9e3f66a649..494bf0e8eb 100644
--- 
a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/AbstractGormMappingFactory.java
+++ 
b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/AbstractGormMappingFactory.java
@@ -202,7 +202,8 @@ public abstract class AbstractGormMappingFactory<R extends 
Entity, T extends Pro
         }
         else {
             T property = 
BeanUtils.instantiateClass(getPropertyMappedFormType());
-            if (!GormProperties.IDENTITY.equals(mpp.getName()) && 
!GormProperties.VERSION.equals(mpp.getName())) {
+            if (!GormProperties.IDENTITY.equals(mpp.getName()) &&
+                    !GormProperties.VERSION.equals(mpp.getName())) {
                 property.setNullable(defaultNullable);
             }
             return property;
diff --git 
a/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
 
b/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
index 80a87452dd..ec86f0860b 100644
--- 
a/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
+++ 
b/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
@@ -586,7 +586,7 @@ class GrailsWebDataBinder extends SimpleDataBinder {
                         otherSide = ((Association) property).inverseSide
                     }
                 }
-                if (otherSide != null && 
List.isAssignableFrom(otherSide.getType()) && !property.isNullable()) {
+                if (otherSide != null && 
List.isAssignableFrom(otherSide.getType())) {
                     DeferredBindingActions.addBindingAction(new Runnable() {
                         void run() {
                             if (obj[propName] != null && otherSide instanceof 
OneToMany) {

Reply via email to