You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/01/26 23:00:09 UTC

(grails-core) 14/31: update progress

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 bd9254d409d2fb90bd5cc916ee64724e04720a3d
Author: Walter B Duque de Estrada <bo...@users.noreply.github.com>
AuthorDate: Sat Jan 24 20:46:57 2026 -0600

    update progress
---
 .../validation/SaveWithInvalidEntitySpec.groovy    |  3 ++-
 .../orm/hibernate/GrailsHibernateTemplate.java     | 25 +++++++++++++++-------
 .../validation/SaveWithInvalidEntitySpec.groovy    | 13 ++++++++---
 3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy b/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy
index 39f3a5a166..3ad02530d9 100644
--- a/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy
+++ b/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy
@@ -47,7 +47,8 @@ class SaveWithInvalidEntitySpec extends Specification {
         hibernateDatastore.currentSession.flush()
 
         then:
-        IllegalStateException e = thrown()
+        Exception e = thrown()
+        throw new RuntimeException("EXCEPTION: " + e.getClass().getName() + "\nSTACK: " + e.stackTrace.collect { it.toString() }.join("\n"))
 
     }
 }
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java
index 742af1a6c0..2567e2df10 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java
@@ -699,20 +699,29 @@ public class GrailsHibernateTemplate implements IHibernateTemplate {
         return translator.translate("Hibernate operation: " + msg, sql, sqlException);
     }
 
-    public void persist(Object o) {
-        sessionFactory.getCurrentSession().persist(o);
+    public void persist(final Object entity) throws DataAccessException {
+        doExecute(session -> {
+            session.persist(entity);
+            return null;
+        }, true);
     }
 
-    public Object merge(Object o) {
-        return sessionFactory.getCurrentSession().merge(o);
+    public Object merge(final Object entity) throws DataAccessException {
+        return doExecute(session -> session.merge(entity), true);
     }
 
-    public void flush() {
-        sessionFactory.getCurrentSession().flush();
+    public void flush() throws DataAccessException {
+        doExecute(session -> {
+            session.flush();
+            return null;
+        }, true);
     }
 
-    public void clear() {
-        sessionFactory.getCurrentSession().clear();
+    public void clear() throws DataAccessException {
+        doExecute(session -> {
+            session.clear();
+            return null;
+        }, true);
     }
 
     public void deleteAll(final Collection<?> objects) {
diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy
index 39f3a5a166..a628f67fb9 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy
@@ -42,13 +42,20 @@ class SaveWithInvalidEntitySpec extends Specification {
     @Rollback
     @Issue('https://github.com/grails/grails-core/issues/10604')
     void "test save with an invalid entity"() {
+        given:
+        def b = new B(field2: "test")
+        def a = new A(b: b)
+
         when:
-        hibernateDatastore.currentSession.persist(new A(b:new B(field2: "test")))
+        hibernateDatastore.currentSession.persist(a)
         hibernateDatastore.currentSession.flush()
 
         then:
-        IllegalStateException e = thrown()
-
+        Exception e = thrown()
+        // In Hibernate 7, a veto results in EntityActionVetoException (translated to HibernateSystemException)
+        e.getClass().simpleName in ['HibernateSystemException', 'IllegalStateException']
+        b.hasErrors()
+        b.errors.hasFieldErrors('field1')
     }
 }