Fixed regressions from Hibernate 5#15550
Conversation
borinquenkid
commented
Apr 3, 2026
- Restore GormInstanceApi merge to previous generic implementation. H7 handles it as an upsert that mutates the instance, the way H5 does.
- Restore DetachedCritera.list functionality to previous implementation.
- H7 Domain Binding refactorings related to Identity wrappers for H7
- Refactor BasicValueIdCreator to take MetadataBuildingContext in constructor. - Move generator binding logic from SimpleValueBinder.bindSimpleValue to bindBasicValue. - Update GrailsPropertyBinder and tests to use renamed bindBasicValue method. - Update all relevant specs to match new constructor and method signatures.
- Move identifier property resolution and sequence detection logic from SimpleIdBinder to BasicValueIdCreator. - Simplify SimpleIdBinder.bindSimpleId by using the new encapsulated methods. - Update relevant unit tests to verify the refactored logic.
…date binding logic - Rename BasicValueIdCreator to BasicValueCreator. - Rename SimpleValueBinder.bindBasicValue to bindSimpleValue. - Update SimpleValueBinder to use BasicValueCreator internally for BasicValue creation. - Update all references, tests, and documentation to reflect the new class and method names.
…in H7 binding Introduce HibernateSimpleIdentityProperty and HibernateCompositeIdentityProperty as proper GORM persistent property types, replacing direct use of the DSL config objects (HibernateSimpleIdentity / HibernateCompositeIdentity) in the binding pipeline. - Add HibernateSimpleIdentityProperty and HibernateCompositeIdentityProperty (both extend HibernateIdentityProperty) - Add HibernatePersistentEntity.getIdentityProperty() returning the typed identity property (simple or composite) - HibernateMappingFactory.createIdentity() now returns HibernateSimpleIdentityProperty - Merge two BasicValueCreator.bindBasicValue() overloads into a single bindBasicValue(HibernatePersistentProperty) — the property supplies its own table and owner, removing redundant parameters - Remove Table parameter from SimpleIdBinder.bindSimpleId() and its callers (IdentityBinder, SimpleValueBinder) - Update all H7 unit specs (IdentityBinderSpec, SimpleIdBinderSpec, SimpleValueBinderSpec, BasicValueCreatorSpec) to match the new API Fix pre-existing TCK failures on Hibernate 7 (never passing in isolation): - EnumSpec: removed duplicate V1 EnumThing records in 3 feature methods that caused findByEn() to throw NonUniqueResultException - FindByMethodSpec.testBooleanPropertyQuery: reduced Highway fixture to 1 bypassed + 1 not-bypassed record; adjusted findAll* count assertions; removed TckBook.findPublished() unique-finder assertion against 3 records These TCK tests were broken since commit 20131c0 ('fix: restore non-hibernate7 test coverage') due to Hibernate 7 strict getSingleResult() enforcement. The full top-level build did not surface them because the grails-datamapping-tck jar was built before those feature methods existed in the compiled artifact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…erty Add getGeneratorName() as a default method on HibernatePersistentProperty that reads from the property's mapped form. HibernateSimpleIdentityProperty overrides it to delegate to the owning entity's getIdentityGeneratorName(), replacing the instanceof check that lived in BasicValueCreator. - HibernatePersistentProperty.getGeneratorName(): default reads PropertyConfig.getGenerator() - HibernateSimpleIdentityProperty.getGeneratorName(): delegates to entity identity generator name - BasicValueCreator.bindBasicValue(): simplified to property.getGeneratorName() with Optional.ofNullable().ifPresent() fluent style; no longer needs instanceof check - BasicValueCreator.createGenerator(): drop unused HibernateSimpleIdentityProperty parameter - BasicValueCreatorSpec: stub identityProperty.getGeneratorName() directly; remove dead domainClass.getIdentityGeneratorName() and getRootClass() stubs; remove unused RootClass entity field Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Verify the new getGeneratorName() default method and its override: - Regular property with no generator configured → returns null (default impl reads PropertyConfig.getGenerator()) - HibernateSimpleIdentityProperty with no explicit generator → delegates correctly to entity.getIdentityGeneratorName() and is non-null - HibernateSimpleIdentityProperty with id generator: 'uuid2' → returns 'uuid2' Adds GeneratorDefaultEntity and GeneratorUuid2Entity test fixtures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…returning null HibernatePersistentEntity wraps a Hibernate RootClass which always has an identifier. Returning null was misleading — callers would silently get NPEs downstream. Now getIdentityProperty() throws MappingException with a clear message if it is called on an entity that has no HibernateSimpleIdentityProperty (a programming error; only embedded entities have no identity, and they are not HibernatePersistentEntity instances). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- SimpleIdBinder.bindSimpleId: remove RootClass and HibernateSimpleIdentityProperty params; derive from domainClass internally; fix always-throw bug (add return) - CompositeIdBinder.bindCompositeId: remove RootClass and HibernateCompositeIdentity params; derive from domainClass internally; fix always-throw bug (add return) - IdentityBinder: call single-arg binders; set persistentClass from root before dispatch - HibernateCompositeIdentityProperty: change parts type from HibernateSimpleIdentityProperty[] to HibernatePersistentProperty[] so regular composite key fields (HibernateSimpleProperty) are not filtered out - HibernatePersistentEntity.getIdentityProperty: pass all composite parts directly without filtering by type - Update all specs: CompositeIdBinderSpec, SimpleIdBinderSpec, IdentityBinderSpec, HibernatePersistentPropertySpec (add composite key regression test) - AGENTS.md: add rule 11 — every code touch must update all tests for the changed class Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
setPersistentClass is already called in ClassBinder.bindClass before bindIdentity is invoked, making the param and the call redundant. Update RootPersistentClassCommonValuesBinder and IdentityBinderSpec accordingly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Extract performUpsert() from save() in HibernateGormInstanceApi Routes to performPersist (id==null) or performMerge (id set) - Override GormStaticApi.merge(D d) in HibernateGormStaticApi to delegate to instanceApi.merge(d) instead of session.persist(d) which throws on detached entities in Hibernate 7 - Fix performMerge to sync id (before flush) and version (after flush) back to the caller's instance, matching Hibernate 5 mutation semantics - Add two tests: merge on new instance gets id+version=0; merge on detached instance keeps id, version increments to 1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Existing test: list(max:N) and list(offset:N, max:M) -> PagedResultList - New test: list() and list(offset:N) without max -> plain List, not PagedResultList Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR addresses Hibernate 7 regressions by aligning GORM merge semantics and DetachedCriteria behavior with pre-Hibernate-7 expectations, and by refactoring Hibernate 7 domain binding/identity infrastructure (simple vs composite identity wrappers, generator wiring).
Changes:
- Adjust
merge()/ upsert behavior (core static merge + Hibernate 7 instance/static merge) and add/modify tests around merge expectations. - Restore
DetachedCriteria.list()return-type behavior (plainListvsPagedResultList) and add coverage forlist()withoutmax. - Refactor Hibernate 7 domain binding identity handling (new identity property types, generator/value creation refactor, binder API updates) and update affected tests/docs.
Reviewed changes
Copilot reviewed 66 out of 66 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/FindByMethodSpec.groovy | Adjust boolean dynamic-finder expectations and remove a findPublished() assertion. |
| grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/EnumSpec.groovy | Simplify enum finder setups in a few tests. |
| grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/DetachedCriteriaSpec.groovy | Add test asserting list() without max returns plain List. |
| grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormStaticApi.groovy | Change static merge(D) to use datastore session.persist. |
| grails-datamapping-core/src/main/groovy/grails/gorm/DetachedCriteria.groovy | Change list(Map) pagination return-type decision to depend on max. |
| grails-data-hibernate7/HIBERNATE7-BINDING.md | Update binding doc names/status notes; add “Resolved Issues” section. |
| grails-data-hibernate7/HIBERNATE_7_MIGRATION.md | Remove migration roadmap document. |
| grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/liquibase/GormColumnSnapshotGeneratorSpec.groovy | Update identity type used in dbmigration spec to new simple identity type. |
| grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/liquibase/GormColumnSnapshotGenerator.groovy | Update identity handling to new simple identity type. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy | Add merge behavior tests (id assignment + version increment). |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/IdentitySpec.groovy | Update tests to new HibernateSimpleIdentity type. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntitySpec.groovy | Update identity/composite identity expectations to new wrapper types. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueBinderSpec.groovy | Update SimpleValueBinder spec for new constructor + generator binding path. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy | Update SimpleIdBinder spec for new BasicValueCreator + binder API. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy | Update binder wiring to BasicValueCreator. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinderSpec.groovy | Update binder wiring to BasicValueCreator. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy | Update composite identity type used in test. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy | Update identity marker interface type used in test. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy | Update composite identity type used in test. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy | Update identity binder spec to new identity-property based API. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentPropertySpec.groovy | Add tests for identity property parts + generator name resolution; add test entities. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIdentityGeneratorSpec.groovy | Update identity type used by generator spec. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceWrapperSpec.groovy | Update identity type used by wrapper spec. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceGeneratorEnumSpec.groovy | Update identity type used by enum generator spec. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdentifierToManyToOneBinderSpec.groovy | Update composite identity type used by spec. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy | Update composite-id binder tests for new identity-property based API. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy | Update binder wiring to BasicValueCreator. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinderSpec.groovy | Update binder wiring to BasicValueCreator. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueCreatorSpec.groovy | Replace BasicValueIdCreator spec with BasicValueCreator spec using identity-property inputs. |
| grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/CompositeIdentitySpec.groovy | Update composite identity tests to new wrapper type. |
| grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/MappingBuilderSpec.groovy | Update composite identity mapping expectation type. |
| grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateMappingBuilderSpec.groovy | Update composite identity mapping expectation type. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy | Override static merge(D) to delegate to instance API. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy | Implement upsert path for merge/save; sync id/version back to target during merge. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Mapping.groovy | Switch identity field type to new identity marker interface and updated identity configuration APIs. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateSimpleIdentity.groovy | Rename/reshape identity mapped form to HibernateSimpleIdentity and update helpers. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateCompositeIdentity.groovy | Rename/reshape composite identity mapped form to HibernateCompositeIdentity. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java | Delete old id-value creator implementation. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueCreator.java | New BasicValue creator (id + general generator wiring) and identifier-property resolution. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinder.java | Update composite identity type usage. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionWithJoinTableBinder.java | Update composite identity type usage. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateSimpleIdentityProperty.java | Introduce explicit simple-identity property type with generator name resolution. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePropertyIdentity.java | Rename identity marker interface. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentProperty.java | Add default getGeneratorName() accessor. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernatePersistentEntity.java | Add getIdentityProperty(), getRootClass(), and identity generator resolution. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingFactory.groovy | Create specialized identity properties and update identity mapping generator resolution. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingBuilder.groovy | Update mapping builder identity types (simple/composite). |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateIdentityMapping.java | Update identity mapped-form types used to derive identifier names. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateCompositeIdentityProperty.java | Introduce composite-identity property type with parts. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java | Update identity mapped-form return types and composite identity optional type. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsTableGenerator.java | Update identity type used by table generator. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceWrapper.java | Update identity type used by generator wrapper. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceStyleGenerator.java | Update identity type used by sequence style generator. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceGeneratorEnum.groovy | Update identity type used throughout generator dispatch. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsIncrementGenerator.java | Update identity type usage and comments. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsIdentityGenerator.java | Update identity type used by identity generator. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleValueBinder.java | Refactor generator wiring via BasicValueCreator and simplify constructor surface. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java | Refactor simple-id binding to identity-property based API and BasicValueCreator. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java | Update identity binding invocation to new binder API. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/NaturalIdentifierBinder.java | Update identity marker interface usage. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java | Update composite identity type usage. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java | Switch identity binding to identity-property based dispatch; add error on missing identity. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java | Wire BasicValueCreator into SimpleIdBinder. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdentifierToManyToOneBinder.java | Update composite identity type used in binder API. |
| grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java | Refactor composite-id binding to identity-property based API. |
| AGENTS.md | Add new agent guideline about updating all tests impacted by a class change. |
Comments suppressed due to low confidence (1)
grails-datamapping-core/src/main/groovy/grails/gorm/DetachedCriteria.groovy:142
- The
args?.maxcheck is truthy-based; if a caller passesmax: 0(which is a valid value and is handled bypopulateArgumentsForCriteriaviacontainsKey('max')), this condition will be false andlist()will return a plainListinstead of aPagedResultList. Prefer checkingargs?.containsKey('max')(orargs?.get('max') != null) rather than truthiness.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
grails-datamapping-core/src/main/groovy/grails/gorm/DetachedCriteria.groovy
Show resolved
Hide resolved
...mapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/FindByMethodSpec.groovy
Outdated
Show resolved
Hide resolved
| when: | ||
| book = TckBook.findPublishedByTitleOrAuthor('Fly Fishing For Everyone', 'Dierk') | ||
| then: | ||
| 'GINA' == book.title | ||
| TckBook.findPublished() != null | ||
|
|
There was a problem hiding this comment.
Removing the TckBook.findPublished() != null assertion drops coverage for the single-result findPublished() dynamic finder (the rest of the test only covers findAllPublished*). If the call was flaky, consider asserting something deterministic about findPublished() (for example, that it returns a published book) rather than removing it entirely.
...7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
Outdated
Show resolved
Hide resolved
...ore/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
Outdated
Show resolved
Hide resolved
This comment has been minimized.
This comment has been minimized.
jdaugherty
left a comment
There was a problem hiding this comment.
Great work, can we please fix the 2 mismatched exception messages and rename domainClass variable names where the type is a persistent entity?
...ore/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
Show resolved
Hide resolved
...ore/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
Outdated
Show resolved
Hide resolved
...7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
Outdated
Show resolved
Hide resolved
…ria.list withPopulatedQuery already calls populateArgumentsForCriteria unconditionally. The extra call inside the args?.max branch caused duplicate ORDER BY clauses since Query.order() is additive (orderBy.add). Remove the redundant call. Add test to verify sort+max returns results in correct order exactly once. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add Query.clearOrders() to core — clears orderBy list; subclasses override - Override HibernateQuery.clearOrders() to also clear JPA detachedCriteria orders, replacing the TODO HACK that used order(null) to piggyback order clearing - HibernateQuery.order() now unconditionally delegates to detachedCriteria (no null check) - PagedResultList.initialize() calls clearOrders() on cloned query before COUNT, replacing the direct orderBy.clear() which missed HibernateQuery's JPA orders - DetachedCriteria.list() uses protected newPagedResultList() factory method - Tests: HibernateQuerySpec (clearOrders), PagedResultListSpec (DetachedCriteria sort+max totalCount), DetachedCriteriaSpec TCK (sort+max+totalCount) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a second bypassed and not-bypassed Highway row so findAllBypassed() and findAllNotBypassed() actually validate multi-row behavior. Replace findNotBypassed()/findBypassed() singular calls (which now throw NonUniqueResultException with 2 rows) with findBypassedByName/ findNotBypassedByName to keep singular finders unambiguous. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
When actionName is null and no id is present, append the controller token so that <g:form controller="foo"> (no action) generates /foo instead of an empty string. Preserve existing behaviour when an id is present and no action is given (id-only URL patterns such as /$id? still resolve correctly without prepending the context controller name). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The 'many-to-many queries with sorting do not throw exception' feature (issue #14636) now passes on Hibernate 5 as well. Remove the @PendingFeatureIf guard and the unused IgnoreIf/PendingFeatureIf imports. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
✅ All tests passed ✅🏷️ Commit: 9c79935 Learn more about TestLens at testlens.app. |
jamesfredley
left a comment
There was a problem hiding this comment.
Thank you for working on these few final items.
| def testResultsDir = subproject.layout.buildDirectory.dir("test-results").get().asFile | ||
| if (testResultsDir.exists()) { | ||
| def processedDirs = [] as Set | ||
|
|
There was a problem hiding this comment.
It's not clear to me why we need this plugin when the aggregate test project already exists. @borinquenkid I'm going to go ahead and merge this PR and we can re-address on the hibernate PR.
|
@borinquenkid Can 8.0.x-hibernate7-dev be removed now? |