This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch 8.0.x-hibernate7 in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit d496cc0cce39c1a4c4996ab383ec138cd98f5f96 Author: Walter B Duque de Estrada <[email protected]> AuthorDate: Mon Jan 26 09:35:10 2026 -0600 progress --- grails-data-hibernate7/core/HIBERNATE7-TESTS.csv | 28 +++++------ .../orm/hibernate/cfg/GrailsDomainBinder.java | 17 +------ .../orm/hibernate/cfg/HibernateClassMapping.java | 54 ++++++++++++++++++++++ .../cfg/HibernateEmbeddedClassMapping.java | 37 +++++++++++++++ .../cfg/HibernateEmbeddedPersistentEntity.java | 23 +-------- .../hibernate/cfg/HibernatePersistentEntity.java | 16 +------ 6 files changed, 109 insertions(+), 66 deletions(-) diff --git a/grails-data-hibernate7/core/HIBERNATE7-TESTS.csv b/grails-data-hibernate7/core/HIBERNATE7-TESTS.csv index 6c6745e824..9809a52a0f 100644 --- a/grails-data-hibernate7/core/HIBERNATE7-TESTS.csv +++ b/grails-data-hibernate7/core/HIBERNATE7-TESTS.csv @@ -1,21 +1,23 @@ Test File , Status , Notes -`src/test/groovy/grails/gorm/specs/UniqueWithMultipleDataSourcesSpec.groovy` , FAILED , -`src/test/groovy/grails/gorm/specs/dirtychecking/HibernateDirtyCheckingSpec.groovy` , FAILED , +`src/test/groovy/grails/gorm/specs/UniqueWithMultipleDataSourcesSpec.groovy` , PASSED , +`src/test/groovy/grails/gorm/specs/dirtychecking/HibernateDirtyCheckingSpec.groovy` , PASSED , `src/test/groovy/grails/gorm/specs/perf/JoinPerfSpec.groovy` , FAILED , `src/test/groovy/grails/gorm/specs/uuid/UuidInsertSpec.groovy` , FAILED , -`src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy` , FAILED , -`TCK: org.apache.grails.data.testing.tck.tests.AttachMethodSpec` , SKIPPED , Requires fix in GORM Hibernate 7 implementation for entity re-attachment. +`src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy` , PASSED , +`TCK: org.apache.grails.data.testing.tck.tests.AttachMethodSpec` , FAILED , `TCK: org.apache.grails.data.testing.tck.tests.BuiltinUniqueConstraintWorksWithTargetProxiesConstraintsSpec` , FAILED , `TCK: org.apache.grails.data.testing.tck.tests.DirtyCheckingSpec` , FAILED , `TCK: org.apache.grails.data.testing.tck.tests.GroovyProxySpec` , SKIPPED , Requires fix in GORM Hibernate 7 implementation for proxy initialization (isInitialized method) for native proxies. `TCK: org.apache.grails.data.testing.tck.tests.QueryEventsSpec` , FAILED , `TCK: org.apache.grails.data.testing.tck.tests.SessionCreationEventSpec` , FAILED , -`TCK: org.apache.grails.data.testing.tck.tests.UpdateWithProxyPresentSpec` , FAILED , -`src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy` , FAILED , -`src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy` , FAILED , -`src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SequenceGeneratorsSpec.groovy` , FAILED , only increment fails -`src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourceConnectionsSpec.groovy` , FAILED , -`src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourcesWithCachingSpec.groovy` , SKIPPED , Multi-datasource mapping issue in Hibernate 7. -`src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourcesWithEventsSpec.groovy` , FAILED , -`src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy` , FAILED , -`src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy` , FAILED , \ No newline at end of file +`TCK: org.apache.grails.data.testing.tck.tests.UpdateWithProxyPresentSpec` , FAILED , Fails when hibernate7.gorm.suite=false +`TCK: org.apache.grails.data.testing.tck.tests.NamedQuerySpec` , FAILED , Fails when hibernate7.gorm.suite=false +`src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SequenceGeneratorsSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IncrementGeneratorSpec.groovy` , FAILED , +`src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourceConnectionsSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourcesWithCachingSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourcesWithEventsSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy` , PASSED , +`src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy` , PASSED , \ No newline at end of file diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java index c4b2054829..3c7c7466ea 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java @@ -1092,23 +1092,8 @@ public class GrailsDomainBinder private void evaluateMapping(GrailsHibernatePersistentEntity persistentEntity) { Optional.ofNullable(persistentEntity).ifPresent(domainClass -> { - try { - Mapping m = domainClass.getMappedForm(); - for (PersistentProperty property : domainClass.getPersistentProperties()) { - PropertyConfig propConf = m.getPropertyConfig(property.getName()); - - if (propConf != null && propConf.getCascade() != null) { - propConf.setExplicitSaveUpdateCascade(CascadeBehavior.isSaveUpdate(propConf.getCascade())); - } - } - Class<?> theClass = domainClass.getJavaClass(); - MappingCacheHolder.getInstance().cacheMapping(theClass, m); - } catch (Exception e) { - throw new DatastoreConfigurationException("Error evaluating ORM mappings block for domain [" + - domainClass.getName() + "]: " + e.getMessage(), e); - } + domainClass.getMappedForm(); }); - } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateClassMapping.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateClassMapping.java new file mode 100644 index 0000000000..71201e7f27 --- /dev/null +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateClassMapping.java @@ -0,0 +1,54 @@ +/* + * Copyright 2015 original authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.grails.orm.hibernate.cfg; + +import org.grails.datastore.mapping.model.AbstractClassMapping; +import org.grails.datastore.mapping.model.DatastoreConfigurationException; +import org.grails.datastore.mapping.model.MappingContext; +import org.grails.datastore.mapping.model.PersistentEntity; +import org.grails.datastore.mapping.model.PersistentProperty; +import org.grails.orm.hibernate.cfg.domainbinding.CascadeBehavior; + +/** + * A {@link org.grails.datastore.mapping.model.ClassMapping} implementation for Hibernate + * + * @author Graeme Rocher + * @since 5.0 + */ +public class HibernateClassMapping extends AbstractClassMapping<Mapping> { + private final Mapping mappedForm; + + public HibernateClassMapping(PersistentEntity entity, MappingContext context) { + super(entity, context); + try { + this.mappedForm = (Mapping) context.getMappingFactory().createMappedForm(entity); + for (PropertyConfig propConf : mappedForm.getPropertyConfigs().values()) { + if (propConf != null && propConf.getCascade() != null) { + propConf.setExplicitSaveUpdateCascade(CascadeBehavior.isSaveUpdate(propConf.getCascade())); + } + } + MappingCacheHolder.getInstance().cacheMapping(entity.getJavaClass(), mappedForm); + } catch (Exception e) { + throw new DatastoreConfigurationException("Error evaluating ORM mappings block for domain [" + + entity.getName() + "]: " + e.getMessage(), e); + } + } + + @Override + public Mapping getMappedForm() { + return mappedForm; + } +} diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedClassMapping.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedClassMapping.java new file mode 100644 index 0000000000..f832332e7b --- /dev/null +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedClassMapping.java @@ -0,0 +1,37 @@ +/* + * Copyright 2015 original authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.grails.orm.hibernate.cfg; + +import org.grails.datastore.mapping.model.IdentityMapping; +import org.grails.datastore.mapping.model.MappingContext; +import org.grails.datastore.mapping.model.PersistentEntity; + +/** + * A {@link org.grails.datastore.mapping.model.ClassMapping} implementation for embedded entities in Hibernate + * + * @author Graeme Rocher + * @since 5.0 + */ +public class HibernateEmbeddedClassMapping extends HibernateClassMapping { + public HibernateEmbeddedClassMapping(PersistentEntity entity, MappingContext context) { + super(entity, context); + } + + @Override + public IdentityMapping getIdentifier() { + return null; + } +} diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedPersistentEntity.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedPersistentEntity.java index e0ba4369a8..2a0727d1d0 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedPersistentEntity.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateEmbeddedPersistentEntity.java @@ -32,28 +32,7 @@ public class HibernateEmbeddedPersistentEntity extends EmbeddedPersistentEntity< public HibernateEmbeddedPersistentEntity(Class type, MappingContext ctx) { super(type, ctx); - this.classMapping = new ClassMapping<Mapping>() { - Mapping mappedForm = (Mapping) context.getMappingFactory().createMappedForm(HibernateEmbeddedPersistentEntity.this); - - @Override - public PersistentEntity getEntity() { - return HibernateEmbeddedPersistentEntity.this; - } - - @Override - public Mapping getMappedForm() { - return mappedForm; - } - - @Override - public IdentityMapping getIdentifier() { - return null; - } - - - }; - - + this.classMapping = new HibernateEmbeddedClassMapping(this, ctx); } @Override diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernatePersistentEntity.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernatePersistentEntity.java index 458d3a8223..4e5eb51174 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernatePersistentEntity.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernatePersistentEntity.java @@ -35,21 +35,7 @@ public class HibernatePersistentEntity extends AbstractPersistentEntity<Mapping> public HibernatePersistentEntity(Class javaClass, final MappingContext context) { super(javaClass, context); - - - this.classMapping = new AbstractClassMapping<Mapping>(this, context) { - Mapping mappedForm = (Mapping) context.getMappingFactory().createMappedForm(HibernatePersistentEntity.this); - @Override - public PersistentEntity getEntity() { - return HibernatePersistentEntity.this; - } - - @Override - public Mapping getMappedForm() { - return mappedForm; - } - }; - + this.classMapping = new HibernateClassMapping(this, context); } @Override
