jamesfredley commented on PR #15731: URL: https://github.com/apache/grails-core/pull/15731#issuecomment-4724801575
## Module + TCK parity: tracked follow-ups completed Continued the parity pass; the module/TCK follow-ups from the previous comment are now done and verified. Pushed as `ec562deee4` and `08ae34fa36`. **H7 -> H5 (shared behavior added to H5, verified passing on H5):** `HibernateGormEnhancerSpec`, `HibernateDatastoreMultiTenancySpec`, `HibernateEventListenersSpec`, `HibernateConnectionSourceSettingsBuilderSpec`, `GrailsQueryExceptionSpec`, `HibernateDatastoreConnectionSourcesRegistrarSpec`, `SoftKeySpec`, `AddToManagedEntitySpec`, `GormEnhancerCleanupSpec`, `PersistentPropertySpec`, `NullValueEqualSpec`. **H5 -> H7 (reverse gap closed):** `grails/gorm/tests/proxy/ByteBuddyProxySpec` added to H7 (default ByteBuddy proxy getId/id/truthy/association checks do not initialize the proxy). **Documented H5 vs H7 behavioral differences (each side asserts its own real result, verified):** | Behavior | Hibernate 5.6 | Hibernate 7.4 | |---|---|---| | `PersistentProperty.isLazyAble()` on a unidirectional one-to-many | `false` | `true` | | `isDirty()` on a clean loaded proxy | initializes the proxy | does **not** initialize the proxy | | `countByAgeNotEqual(11)` with null-aged rows present | `0` (SQL three-valued logic excludes nulls) | `2` (null-valued rows included) | **Verified H7-only (not gaps):** the remaining H7 behavioral specs were each copied into H5 and run; they fail on H5 because they depend on Hibernate-7-specific API/behavior (`HibernateCriteriaBuilder`/`InstanceApiHelper`/`EventListenerIntegrator` signatures, H7 event SPI/metamodel types, `ChildHibernateDatastore`/`CloseSuppressingInvocationHandler`/`HibernatePagedResultList`/`SelectHqlQuery`/`HibernateDetachedCriteria`), so they correctly stay H7-only. The ~140 `cfg/domainbinding/**` + `query/**` specs cover the H7 internal rewrite that has no H5 code to mirror. **State:** full `grails-data-hibernate5-core` suite green (722 tests, 0 failures, 33 skipped) with all additions; new H7 specs verified on H7. Every version-agnostic GORM contract now runs on both lines (shared TCK + the per-module specs), and there are no remaining true H5-only or H7-only behavioral gaps - only legitimate Hibernate-implementation asymmetry. **Remaining (separate functional pass):** dedicated Hibernate 7 functional apps under `grails-test-examples` for the GORM-bearing general apps (`datasources` OSIV/multi-datasource, `views-functional-tests` and `scaffolding-fields` association rendering / unique constraints), replacing the removed runtime substitution. This is app-creation + Geb work rather than spec porting. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
