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]

Reply via email to