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))

Reply via email to