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 666b60a6e8e75414aee47899051e52ad333753c0 Author: Walter B Duque de Estrada <[email protected]> AuthorDate: Tue Jan 13 13:47:25 2026 -0600 Implement ManagedEntity instanceId methods in HibernateEntityTransformation for Hibernate 7 compatibility --- .../compiler/HibernateEntityTransformation.groovy | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformation.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformation.groovy index bd837b1975..d4a606534c 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformation.groovy +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformation.groovy @@ -93,6 +93,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni String entryHolderFieldName = '$$_hibernate_entityEntryHolder' String previousManagedEntityFieldName = '$$_hibernate_previousManagedEntity' String nextManagedEntityFieldName = '$$_hibernate_nextManagedEntity' + String instanceIdFieldName = '$$_hibernate_instanceId' def staticCompilationVisitor = new StaticCompilationVisitor(sourceUnit, classNode) @@ -109,6 +110,10 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni nextManagedEntityField .addAnnotation(transientAnnotationNode) + FieldNode instanceIdField = classNode.addField(instanceIdFieldName, Modifier.PRIVATE | Modifier.TRANSIENT, ClassHelper.int_TYPE, constX(-1)) + instanceIdField + .addAnnotation(transientAnnotationNode) + FieldNode interceptorField = classNode.addField(interceptorFieldName, Modifier.PRIVATE | Modifier.TRANSIENT, persistentAttributeInterceptorClassNode, null) interceptorField .addAnnotation(transientAnnotationNode) @@ -237,6 +242,33 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni AnnotatedNodeUtils.markAsGenerated(classNode, setNextManagedEntityMethod) staticCompilationVisitor.visitMethod(setNextManagedEntityMethod) + // add method: int $$_hibernate_getInstanceId() + def getInstanceIdMethod = new MethodNode( + '$$_hibernate_getInstanceId', + Modifier.PUBLIC, + ClassHelper.int_TYPE, + AstUtils.ZERO_PARAMETERS, + null, + returnS(varX(instanceIdField)) + ) + classNode.addMethod(getInstanceIdMethod) + AnnotatedNodeUtils.markAsGenerated(classNode, getInstanceIdMethod) + staticCompilationVisitor.visitMethod(getInstanceIdMethod) + + // add method: void $$_hibernate_setInstanceId(int instanceId) + def instanceIdParam = param(ClassHelper.int_TYPE, "instanceId") + def setInstanceIdMethod = new MethodNode( + '$$_hibernate_setInstanceId', + Modifier.PUBLIC, + ClassHelper.VOID_TYPE, + params(instanceIdParam), + null, + assignS( varX(instanceIdField), varX(instanceIdParam) ) + ) + classNode.addMethod(setInstanceIdMethod) + AnnotatedNodeUtils.markAsGenerated(classNode, setInstanceIdMethod) + staticCompilationVisitor.visitMethod(setInstanceIdMethod) + // add field: boolean $$_hibernate_useTracker String useTrackerFieldName = '$$_hibernate_useTracker' FieldNode useTrackerField = classNode.addField(useTrackerFieldName, Modifier.PRIVATE | Modifier.TRANSIENT, ClassHelper.boolean_TYPE, constX(false))
