Skip to content

Hibernate 7#15568

Open
jdaugherty wants to merge 1070 commits into8.0.xfrom
8.0.x-hibernate7
Open

Hibernate 7#15568
jdaugherty wants to merge 1070 commits into8.0.xfrom
8.0.x-hibernate7

Conversation

@jdaugherty
Copy link
Copy Markdown
Contributor

Reopening. This PR replaces #15530

### Build issue
**Issue** misconfiguration of grails-data-tck-config.gradle and core build.gradle

### Global Naming Strategy Pollution (Fixed)
**Issue:** `GrailsDomainBinder` used a static `NamingStrategyProvider`, causing naming strategies configured in one test to persist into others.
**Action:** Refactored `NamingStrategyProvider` into an instance-based field. Updated `GrailsDomainBinder`, `HibernateMappingContextConfiguration`, and `HibernateConnectionSourceFactory` to pass this instance through the configuration lifecycle.

### Static Mapping Cache (Fixed)
**Issue:** `MappingCacheHolder` was a static singleton. While `HibernateDatastore` attempted to clear it, direct usage of binders in unit tests often bypassed this cleanup, leading to stale mappings persisting between tests.
**Action:** Refactored `MappingCacheHolder` to remove the static singleton (`getInstance()`). The cache is now instance-based and maintained by `HibernateMappingContext`. All consumers (`GrailsDomainBinder`, `HibernateDatastore`, `HibernateHqlQuery`, etc.) were updated to use the instance tied to their specific configuration cycle, eliminating cross-test pollution.
### Mapping Closure Evaluation Bug (Fixed)
**Issue:** In `HibernateMappingBuilder.groovy`, the `index` property was being aggressively converted to a `String` via `.toString()`. When a closure was provided (e.g., `index: { column 'foo' }`), the internal Groovy closure class name was stored instead of the closure itself, preventing proper evaluation during the second pass.
**Action:** Removed the premature `.toString()` conversion in `HibernateMappingBuilder.handlePropertyInternal`.

### Named Unique Constraints Support (Implemented)
**Issue:** During the exploration of `ColumnConfig` possibilities, it was noted that the `unique` property was restricted to `boolean`, preventing the use of named unique constraints (uniqueness groups) via the DSL.
**Action:** Transitioned `unique` to `Object` in `ColumnConfig.groovy` and added an `isUnique()` helper for Java compatibility. Updated `HibernateMappingBuilder` and `ColumnConfigToColumnBinder` to handle the flexible type. This now allows configuration like `unique: 'groupName'` or `unique: ['group1', 'group2']` through the mapping DSL.

### Multi-Column Property Re-evaluation Bug (Fixed)
**Issue:** Found a bug in `PropertyDefinitionDelegate` where re-evaluating a property with multiple columns would always overwrite the first column instead of correctly updating subsequent ones.
**Action:** Fixed `PropertyDefinitionDelegate` to use the current `index` when accessing existing `ColumnConfig` objects. Added `PropertyDefinitionDelegateSpec` to verify the fix.
 * Criteria Query NPE: Fixed NullPointerException in JpaFromProvider by implementing projection-aware auto-joining for association paths.
   * Subquery Join Leakage: Resolved PathElementException by isolating subquery joins and preventing them from leaking into the outer query scope.
   * Multi-Tenancy Regression: Restored missing PreQueryEvent and PostQueryEvent publication in HibernateQuery to ensure tenant filters are correctly applied.
   * HQL Parameter Binding: Fixed QueryParameterException by filtering GORM-specific query settings (e.g., flushMode) from named parameters in executeQuery.
   * Parameterized String Queries: Added support for executeQuery and executeUpdate overloads that accept plain String queries with positional/named parameters.
   * Multi-Column Mapping Bug: Fixed a bug in PropertyDefinitionDelegate where re-evaluating properties with multiple columns would overwrite the first column.
   * Mapping DSL Index Fix: Resolved a .toString() conversion bug for index closures in HibernateMappingBuilder.
   * Test Suite Modernization: Consolidated legacy HibernateMappingBuilder tests into a modern Spock specification and added verification for multi-column property logic.
  * Criteria Queries: Fixed NullPointerException in projections via auto-joining and isolated subquery joins to prevent path leakage.
    * Multi-Tenancy: Restored PreQueryEvent and PostQueryEvent publication to ensure tenant filters are correctly applied.
    * DDL & Precision: Implemented dialect-aware precision defaulting (15 digits) for non-Oracle databases to avoid invalid float(64) generation.
    * Query Parameters: Filtered internal GORM settings (e.g., flushMode) from HQL named parameters to prevent binding exceptions.
    * Mapping DSL: Fixed a bug where index closures were incorrectly converted to strings and improved unique property assignment.
    * Robustness: Added explicit checks for uninitialized identifier generators to provide descriptive error messages instead of NullPointerException.
 HibernateQuery Event ClassCastException
 **Symptoms:**
 - `java.lang.ClassCastException: class org.grails.datastore.mapping.query.event.PreQueryEvent cannot be cast to class org.grails.datastore.mapping.engine.event.AbstractPersistenceEvent`

 **Description:**
 The event listener in `HibernateQuerySpec` incorrectly expects `AbstractPersistenceEvent` while `PreQueryEvent` and `PostQueryEvent` now extend `AbstractQueryEvent`.
 HibernateQuerySpec fixed to implementation
 JpaFromProvider fixed
 JpaCriteriaQueryCreator cleaned up and spec fixed
 PredicateGenerator cleaned up and spec fixed
jdaugherty and others added 11 commits April 9, 2026 13:00
  Following the pattern used in Hibernate 5, I have moved the vendored Spring Framework ORM Hibernate 7 integration classes from the core module to a dedicated spring-orm module:
   - Created Module: grails-data-hibernate7-spring-orm (located in grails-data-hibernate7/spring-orm).
   - Moved Classes: All classes in org.grails.orm.hibernate.support.hibernate7 (including HibernateTransactionManager, HibernateTemplate, LocalSessionFactoryBean, etc.) are now in the new module.
   - Updated Dependencies:
       - Added the new module to settings.gradle.
       - Updated grails-data-hibernate7-core, grails-plugin, boot-plugin, and dbmigration to depend on the new spring-orm module.
       - Updated gradle/publish-root-config.gradle to ensure the new module is included in the publishing process.
- HibernateDetachedCriteria.isNumericPropertyType: box primitive types
  before the Number.isAssignableFrom check so that domains declaring
  numeric properties as primitives (int/long/double/float/short/byte)
  work correctly in where-DSL arithmetic expressions.
  Method is protected to allow subclass overrides.

- ToManyEntityMultiTenantFilterBinder.bind: add null guard for
  getHibernateAssociatedEntity() return value to prevent
  NullPointerException on partially-resolved associations.

- grails-data-hibernate7/README.md: add grails-data-hibernate7-spring-orm
  to the Module Structure table.

- Tests: new HibernateDetachedCriteriaSpec covering boxed and all 6
  primitive numeric types, non-numeric delegation, and unknown property.
  Added null-associated-entity test to ToManyEntityMultiTenantFilterBinderSpec.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	grails-data-mongodb/core/src/test/groovy/org/apache/grails/data/mongo/core/GrailsDataMongoTckManager.groovy
#	grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BeforeUpdatePropertyPersistenceSpec.groovy
#	grails-datamapping-core-test/src/test/groovy/org/grails/datastore/gorm/CustomAutoTimestampSpec.groovy
#	grails-datamapping-core-test/src/test/groovy/org/grails/datastore/gorm/NestedCriteriaWithNamedQuerySpec.groovy
#	grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormStaticApi.groovy
#	grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/NamedCriteriaProxy.groovy
#	grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/NamedQuerySpec.groovy
#	grails-test-suite-uber/src/test/groovy/grails/compiler/DomainClassWithInnerClassUsingStaticCompilationSpec.groovy
@jdaugherty jdaugherty mentioned this pull request Apr 10, 2026
@jdaugherty jdaugherty changed the base branch from 7.0.x to 8.0.x April 10, 2026 14:02
@testlens-app

This comment has been minimized.

@testlens-app

This comment has been minimized.

# Conflicts:
#	grails-data-mongodb/core/src/test/groovy/org/apache/grails/data/mongo/core/GrailsDataMongoTckManager.groovy
@testlens-app

This comment has been minimized.

@testlens-app

This comment has been minimized.

@testlens-app
Copy link
Copy Markdown

testlens-app bot commented Apr 10, 2026

🚨 TestLens detected 113 failed tests 🚨

Here is what you can do:

  1. Inspect the test failures carefully.
  2. If you are convinced that some of the tests are flaky, you can mute them below.
  3. Finally, trigger a rerun by checking the rerun checkbox.

Test Summary

Check Project/Task Test Runs
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test AggregateMethodSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test AssignedIdentifierSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-hibernate7-dbmigration:integrationTest AutoRunWithMultipleDataSourceSpec > runs app with a multiple datasource
CI - Groovy Joint Validation Build / build_grails :grails-data-hibernate7-dbmigration:integrationTest AutoRunWithSingleDataSourceSpec > runs app with a single datasource
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test AutowireServicesSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BasicArraySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BasicCollectionTypeSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BasicCollectionsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BatchUpdateDeleteSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BeforeInsertUpdateSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BeforeUpdatePropertyPersistenceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BigDecimalSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test BrokenManyToManyAssociationSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CascadeDeleteOneToOneSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CascadeDeleteSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CircularBidirectionalOneToManySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CircularEmbeddedListSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CircularOneToManySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ClearCollectionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CustomCollectionAndAttributeMappingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CustomIdProxySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CustomMongoEventListenerSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test CustomTypeMarshallingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DBObjectConversionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DbRefWithEmbeddedSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-hibernate7-dbmigration:integrationTest DbUpdateCommandSpec > test the transaction behaviour in the changeSet with grailsChange and GORM
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DefaultSortOrderSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DirtyCheckEmbeddedCollectionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DirtyCheckUpdateSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DisableVersionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DisjunctionQuerySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DistinctPropertySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test DocumentMappingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedAssociationSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedBiDirectionalSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedCollectionAndInheritanceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedCollectionWithIdSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedCollectionWithOneToOneSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedHasManyWithBeforeUpdateSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedListWithCustomTypeSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedMapSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedSetAssignedIdSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedSimpleObjectSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedStringListInsideEmbeddedCollectionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedUnsetSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedWhereClauseSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedWithCustomFieldMappingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedWithIdSpecifiedSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedWithNonEmbeddedAssociationsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedWithNonEmbeddedCollectionsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EmbeddedWithinEmbeddedAssociationSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EnumCollectionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EnumTypeSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test EventsWithAbstractInheritanceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test FindNativeSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test FindOrCreateWhereSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GPMongoDB295Spec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GeoJSONTypePersistenceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GeospacialQuerySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GetAllSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GetAllWithStringIdSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GrailsDataMongoTckManagerSpec > cleanup closes the primary datastore so repeated setup stays healthy
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test GreaterThanAndLessThanCriteriaSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test HasOneSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test HintQueryArgumentSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test InListQuerySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test IndexAttributesAndCompoundKeySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test IndexWithInheritanceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test InheritanceQueryingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test InheritanceWithSingleEndedAssociationSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test InnerEnumSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test IsNullSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test JakartaValidationSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test LastUpdatedSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test LikeQuerySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ListOneToManyOrderingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MapOfDomainsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MarkDirtyFalseSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MongoCascadeSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MongoDynamicPropertyOnEmbeddedSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MongoEntityConfigSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MongoGormEnhancerSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MongoResultsListIndexSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test MongoTypesSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test NegateInListSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test NegationEnumSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test NullifyPropertySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test NullsAreNotStoredSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ObjectIdPersistenceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ObjectIdPropertySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test OneToManyWithInheritanceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test OneToOneIntegritySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test OneToOneNoReferenceSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test OptimisticLockingWithExceptionSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test OrderWithPaginationSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test PersistenceEventListenerSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ProjectionsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test QueriesWithIdenticallyNamedPartsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ReadConcernArgumentSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ReadManyObjectsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test ResultsWithGroovyCollectionMethodsSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test SchemalessSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test SessionCachingSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test SetRetrievalSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test SimpleHasManySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test StatelessSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test SwitchDatabaseAtRuntimeSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test TestSearchSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test TransientPropertySpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test WhereQueryInCriteriaSpec
CI - Groovy Joint Validation Build / build_grails :grails-data-mongodb-core:test WriteConcernSpec
CI / Functional Tests (Java 21, indy=false) :grails-test-examples-hibernate7-grails-hibernate:test BookControllerUnitSpec
CI / Functional Tests (Java 25, indy=false) :grails-test-examples-hibernate7-grails-hibernate:test BookControllerUnitSpec

🏷️ Commit: a6c3762
▶️ Tests: 14856 executed
🟡 Checks: 21/30 completed

Test Failures (first 5 of 119)

BookControllerUnitSpec (:grails-test-examples-hibernate7-grails-hibernate:test in CI / Functional Tests (Java 21, indy=false))
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:321)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
	at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:220)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
	... 11 more
Caused by: java.lang.RuntimeException: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory] due to: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
	at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:365)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
	at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
	at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
	at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
	at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
	... 13 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory] due to: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:273)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
	at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
	at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
	at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
	at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
	... 21 more
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:82)
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
	at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
	at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
	at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
	... 28 more
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.cache.ehcache.EhCacheRegionFactory]
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:88)
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
	... 35 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class: org.hibernate.cache.ehcache.EhCacheRegionFactory
	at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:198)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName(Class.java:536)
	at java.base/java.lang.Class.forName(Class.java:515)
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
	... 36 more
	Suppressed: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
		at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
		at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
		at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:202)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:536)
		at java.base/java.lang.Class.forName(Class.java:515)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
		at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
		at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
		at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
		at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
		at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
		at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
		at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
		at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
		at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
		at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
		at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
		at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
		at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
		at org.springframework.beans.factory.BeanFactory$getBean.call(Unknown Source)
		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
		at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
		at java.base/java.lang.reflect.Method.invoke(Method.java:580)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:147)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:144)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:102)
		at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:67)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:398)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:122)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:46)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:11)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	Suppressed: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
		at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
		at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
		at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:202)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:536)
		at java.base/java.lang.Class.forName(Class.java:515)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
		at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
		at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
		at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
		at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
		at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
		at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
		at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
		at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
		at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
		at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
		at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
		at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
		at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
		at org.springframework.beans.factory.BeanFactory$getBean.call(Unknown Source)
		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
		at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
		at java.base/java.lang.reflect.Method.invoke(Method.java:580)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:147)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:144)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:102)
		at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:67)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:398)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:122)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:46)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:11)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	Suppressed: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
		at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
		at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
		at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:202)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:536)
		at java.base/java.lang.Class.forName(Class.java:515)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
		at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
		at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
		at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
		at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
		at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
		at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
		at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
		at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
		at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
		at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
		at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
		at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
		at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
		at org.springframework.beans.factory.BeanFactory$getBean.call(Unknown Source)
		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
		at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
		at java.base/java.lang.reflect.Method.invoke(Method.java:580)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:147)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:144)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:102)
		at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:67)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:398)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:122)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:46)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:11)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
BookControllerUnitSpec (:grails-test-examples-hibernate7-grails-hibernate:test in CI / Functional Tests (Java 25, indy=false))
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:321)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
	at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:220)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
	... 11 more
Caused by: java.lang.RuntimeException: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory] due to: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
	at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:365)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
	at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
	at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
	at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
	at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
	... 13 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory] due to: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:273)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
	at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
	at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
	at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
	at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
	... 21 more
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:82)
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
	at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
	at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
	at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
	... 28 more
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.cache.ehcache.EhCacheRegionFactory]
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:88)
	at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
	... 35 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class: org.hibernate.cache.ehcache.EhCacheRegionFactory
	at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:198)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
	at java.base/java.lang.Class.forName(Class.java:547)
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
	... 36 more
	Suppressed: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
		at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
		at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:202)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:547)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
		at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
		at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
		at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
		at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
		at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
		at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
		at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
		at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
		at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
		at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
		at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
		at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
		at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
		at org.springframework.beans.factory.BeanFactory$getBean.call(Unknown Source)
		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
		at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
		at java.base/java.lang.reflect.Method.invoke(Method.java:565)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:147)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:144)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:102)
		at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:67)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:398)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:122)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:46)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:11)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
	Suppressed: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
		at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
		at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:202)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:547)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
		at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
		at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
		at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
		at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
		at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
		at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
		at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
		at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
		at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
		at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
		at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
		at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
		at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
		at org.springframework.beans.factory.BeanFactory$getBean.call(Unknown Source)
		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
		at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
		at java.base/java.lang.reflect.Method.invoke(Method.java:565)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:147)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:144)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:102)
		at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:67)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:398)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:122)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:46)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:11)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
	Suppressed: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
		at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
		at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:202)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
		at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
		at java.base/java.lang.Class.forName0(Native Method)
		at java.base/java.lang.Class.forName(Class.java:547)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:85)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:78)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:176)
		at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:118)
		at org.hibernate.cache.internal.RegionFactoryInitiator.resolveRegionFactory(RegionFactoryInitiator.java:91)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:44)
		at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:30)
		at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235)
		at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212)
		at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:706)
		at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:134)
		at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:195)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1029)
		at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
		at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
		at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
		at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
		at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
		at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
		at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
		at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
		at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
		at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
		at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1210)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
		at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
		at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1305)
		at org.springframework.beans.factory.BeanFactory$getBean.call(Unknown Source)
		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
		at grails.test.hibernate.HibernateSpec.setupSpec(HibernateSpec.groovy:183)
		at java.base/java.lang.reflect.Method.invoke(Method.java:565)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:147)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.doRunSetupSpec(PlatformSpecRunner.java:144)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSetupSpec$2(PlatformSpecRunner.java:132)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:102)
		at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:67)
		at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:398)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:127)
		at org.spockframework.runtime.PlatformSpecRunner.runSetupSpec(PlatformSpecRunner.java:122)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:46)
		at org.spockframework.runtime.SpecNode.before(SpecNode.java:11)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
AggregateMethodSpec (:grails-data-mongodb-core:test in CI - Groovy Joint Validation Build / build_grails)
org.spockframework.runtime.extension.ExtensionException: Failed to evaluate condition
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.evaluateCondition(ConditionalExtension.java:126)
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.evaluateCondition(ConditionalExtension.java:112)
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.visitSpecAnnotation(ConditionalExtension.java:58)
	at org.spockframework.runtime.extension.IAnnotationDrivenExtension.visitSpecAnnotations(IAnnotationDrivenExtension.java:40)
	at org.spockframework.runtime.ExtensionRunner.doRunAnnotationDrivenExtensions(ExtensionRunner.java:124)
	at org.spockframework.runtime.ExtensionRunner.doRunAnnotationDrivenExtensions(ExtensionRunner.java:114)
	at org.spockframework.runtime.ExtensionRunner.runAnnotationDrivenExtensions(ExtensionRunner.java:65)
	at org.spockframework.runtime.ExtensionRunner.runAnnotationDrivenExtensions(ExtensionRunner.java:63)
	at org.spockframework.runtime.ExtensionRunner.runAnnotationDrivenExtensions(ExtensionRunner.java:54)
	at org.spockframework.runtime.ExtensionRunner.run(ExtensionRunner.java:44)
	at org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.processSpecNode(SpockEngineDiscoveryPostProcessor.java:52)
	at org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.lambda$postProcessEngineDescriptor$0(SpockEngineDiscoveryPostProcessor.java:16)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.postProcessEngineDescriptor(SpockEngineDiscoveryPostProcessor.java:17)
	at org.spockframework.runtime.SpockEngine.discover(SpockEngine.java:31)
Caused by: groovy.lang.MissingMethodException: No signature of method: static org.apache.grails.data.mongo.core.GrailsDataMongoTckManager.isDockerAvailable() is applicable for argument types: () values: []
	at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1652)
	at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1638)
	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
	at org.apache.grails.data.mongo.core.MongoDatastoreSpec.isDockerAvailable(MongoDatastoreSpec.groovy:28)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
	at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1597)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:611)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:406)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:331)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009)
	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
	at org.apache.grails.data.mongo.core.MongoDatastoreSpec$_closure1.doCall(MongoDatastoreSpec.groovy:24)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009)
	at groovy.lang.Closure.call(Closure.java:433)
	at groovy.lang.Closure.call(Closure.java:422)
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.evaluateCondition(ConditionalExtension.java:124)
	... 22 more
AssignedIdentifierSpec (:grails-data-mongodb-core:test in CI - Groovy Joint Validation Build / build_grails)
org.spockframework.runtime.extension.ExtensionException: Failed to evaluate condition
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.evaluateCondition(ConditionalExtension.java:126)
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.evaluateCondition(ConditionalExtension.java:112)
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.visitSpecAnnotation(ConditionalExtension.java:58)
	at org.spockframework.runtime.extension.IAnnotationDrivenExtension.visitSpecAnnotations(IAnnotationDrivenExtension.java:40)
	at org.spockframework.runtime.ExtensionRunner.doRunAnnotationDrivenExtensions(ExtensionRunner.java:124)
	at org.spockframework.runtime.ExtensionRunner.doRunAnnotationDrivenExtensions(ExtensionRunner.java:114)
	at org.spockframework.runtime.ExtensionRunner.runAnnotationDrivenExtensions(ExtensionRunner.java:65)
	at org.spockframework.runtime.ExtensionRunner.runAnnotationDrivenExtensions(ExtensionRunner.java:63)
	at org.spockframework.runtime.ExtensionRunner.runAnnotationDrivenExtensions(ExtensionRunner.java:54)
	at org.spockframework.runtime.ExtensionRunner.run(ExtensionRunner.java:44)
	at org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.processSpecNode(SpockEngineDiscoveryPostProcessor.java:52)
	at org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.lambda$postProcessEngineDescriptor$0(SpockEngineDiscoveryPostProcessor.java:16)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.postProcessEngineDescriptor(SpockEngineDiscoveryPostProcessor.java:17)
	at org.spockframework.runtime.SpockEngine.discover(SpockEngine.java:31)
Caused by: groovy.lang.MissingMethodException: No signature of method: static org.apache.grails.data.mongo.core.GrailsDataMongoTckManager.isDockerAvailable() is applicable for argument types: () values: []
	at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1652)
	at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1638)
	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
	at org.apache.grails.data.mongo.core.MongoDatastoreSpec.isDockerAvailable(MongoDatastoreSpec.groovy:28)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
	at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1597)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:611)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:406)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:331)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009)
	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
	at org.apache.grails.data.mongo.core.MongoDatastoreSpec$_closure1.doCall(MongoDatastoreSpec.groovy:24)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009)
	at groovy.lang.Closure.call(Closure.java:433)
	at groovy.lang.Closure.call(Closure.java:422)
	at org.spockframework.runtime.extension.builtin.ConditionalExtension.evaluateCondition(ConditionalExtension.java:124)
	... 22 more
AutoRunWithMultipleDataSourceSpec > runs app with a multiple datasource (:grails-data-hibernate7-dbmigration:integrationTest in CI - Groovy Joint Validation Build / build_grails)
java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@4353146f testClass = org.grails.plugins.databasemigration.AutoRunWithMultipleDataSourceSpec, locations = [], classes = [databasemigration.Application], contextInitializerClasses = [], activeProfiles = ["multiple-datasource"], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true", "server.port=0"], contextCustomizers = [org.spockframework.spring.mock.SpockContextCustomizer@0, org.springframework.boot.test.context.PropertyMappingContextCustomizer@0, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@53ed80d3, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@1ee27d73, org.springframework.boot.web.server.context.SpringBootTestRandomPortContextCustomizer@5583098b, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@259f0c47], resourceBasePath = "src/main/webapp", contextLoader = grails.boot.test.GrailsApplicationContextLoader, parent = null]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.lambda$loadContext$0(DefaultCacheAwareContextLoaderDelegate.java:195)
	at org.springframework.test.context.cache.DefaultContextCache.put(DefaultContextCache.java:214)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:160)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:128)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:156)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:111)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
	at org.spockframework.spring.SpringTestContextManager.prepareTestInstance(SpringTestContextManager.java:56)
	at org.spockframework.spring.SpringInterceptor.interceptInitializerMethod(SpringInterceptor.java:46)
	at org.spockframework.runtime.extension.AbstractMethodInterceptor.intercept(AbstractMethodInterceptor.java:24)
	at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:321)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1382)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1221)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:413)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1362)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1218)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1184)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:994)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621)
	at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
	at grails.boot.GrailsApp.run(GrailsApp.groovy:100)
	at grails.boot.GrailsApp.run(GrailsApp.groovy:394)
	at grails.boot.GrailsApp.run(GrailsApp.groovy:383)
	at databasemigration.Application.main(Application.groovy:32)
	at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:281)
	at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$1(SpringBootContextLoader.java:148)
	at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.lambda$runMain$0(SpringBootContextLoader.java:593)
	at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
	at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
	at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1465)
	at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:600)
	at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.runMain(SpringBootContextLoader.java:592)
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:143)
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:114)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:247)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.lambda$loadContext$0(DefaultCacheAwareContextLoaderDelegate.java:167)
	... 13 more
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:220)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:129)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
	... 56 more
Caused by: java.lang.RuntimeException: org.hibernate.HibernateException: Expecting EnversService to have been initialized prior to call to EnversIntegrator#integrate
	at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:365)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:166)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:280)
	at org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory.create(HibernateConnectionSourceFactory.java:68)
	at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:83)
	at org.grails.datastore.mapping.core.connections.AbstractConnectionSourceFactory.create(AbstractConnectionSourceFactory.java:71)
	at org.grails.datastore.mapping.core.connections.ConnectionSourcesInitializer.create(ConnectionSourcesInitializer.groovy:45)
	at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:350)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207)
	... 58 more
Caused by: org.hibernate.HibernateException: Expecting EnversService to have been initialized prior to call to EnversIntegrator#integrate
	at org.hibernate.envers.boot.internal.EnversIntegrator.integrate(EnversIntegrator.java:70)
	at org.hibernate.internal.SessionFactoryImpl.integrate(SessionFactoryImpl.java:429)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:262)
	at org.hibernate.internal.SessionFactoryRegistry.instantiateSessionFactory(SessionFactoryRegistry.java:64)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:437)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1115)
	at org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration.buildSessionFactory(HibernateMappingContextConfiguration.java:363)
	... 66 more

Muted Tests

Note

Checks are currently running using the configuration below.

Select tests to mute in this pull request:

🔲 AggregateMethodSpec
🔲 AssignedIdentifierSpec
🔲 AutoRunWithMultipleDataSourceSpec > runs app with a multiple datasource
🔲 AutoRunWithSingleDataSourceSpec > runs app with a single datasource
🔲 AutowireServicesSpec
🔲 BasicArraySpec
🔲 BasicCollectionTypeSpec
🔲 BasicCollectionsSpec
🔲 BatchUpdateDeleteSpec
🔲 BeforeInsertUpdateSpec
🔲 BeforeUpdatePropertyPersistenceSpec
🔲 BigDecimalSpec
🔲 BookControllerUnitSpec
🔲 BrokenManyToManyAssociationSpec
🔲 CascadeDeleteOneToOneSpec
🔲 CascadeDeleteSpec
🔲 CircularBidirectionalOneToManySpec
🔲 CircularEmbeddedListSpec
🔲 CircularOneToManySpec
🔲 ClearCollectionSpec
🔲 CustomCollectionAndAttributeMappingSpec
🔲 CustomIdProxySpec
🔲 CustomMongoEventListenerSpec
🔲 CustomTypeMarshallingSpec
🔲 DBObjectConversionSpec
🔲 DbRefWithEmbeddedSpec
🔲 DbUpdateCommandSpec > test the transaction behaviour in the changeSet with grailsChange and GORM
🔲 DefaultSortOrderSpec
🔲 DirtyCheckEmbeddedCollectionSpec
🔲 DirtyCheckUpdateSpec
🔲 DisableVersionSpec
🔲 DisjunctionQuerySpec
🔲 DistinctPropertySpec
🔲 DocumentMappingSpec
🔲 EmbeddedAssociationSpec
🔲 EmbeddedBiDirectionalSpec
🔲 EmbeddedCollectionAndInheritanceSpec
🔲 EmbeddedCollectionWithIdSpec
🔲 EmbeddedCollectionWithOneToOneSpec
🔲 EmbeddedHasManyWithBeforeUpdateSpec
🔲 EmbeddedListWithCustomTypeSpec
🔲 EmbeddedMapSpec
🔲 EmbeddedSetAssignedIdSpec
🔲 EmbeddedSimpleObjectSpec
🔲 EmbeddedStringListInsideEmbeddedCollectionSpec
🔲 EmbeddedUnsetSpec
🔲 EmbeddedWhereClauseSpec
🔲 EmbeddedWithCustomFieldMappingSpec
🔲 EmbeddedWithIdSpecifiedSpec
🔲 EmbeddedWithNonEmbeddedAssociationsSpec
🔲 EmbeddedWithNonEmbeddedCollectionsSpec
🔲 EmbeddedWithinEmbeddedAssociationSpec
🔲 EnumCollectionSpec
🔲 EnumTypeSpec
🔲 EventsWithAbstractInheritanceSpec
🔲 FindNativeSpec
🔲 FindOrCreateWhereSpec
🔲 GPMongoDB295Spec
🔲 GeoJSONTypePersistenceSpec
🔲 GeospacialQuerySpec
🔲 GetAllSpec
🔲 GetAllWithStringIdSpec
🔲 GrailsDataMongoTckManagerSpec > cleanup closes the primary datastore so repeated setup stays healthy
🔲 GreaterThanAndLessThanCriteriaSpec
🔲 HasOneSpec
🔲 HintQueryArgumentSpec
🔲 InListQuerySpec
🔲 IndexAttributesAndCompoundKeySpec
🔲 IndexWithInheritanceSpec
🔲 InheritanceQueryingSpec
🔲 InheritanceWithSingleEndedAssociationSpec
🔲 InnerEnumSpec
🔲 IsNullSpec
🔲 JakartaValidationSpec
🔲 LastUpdatedSpec
🔲 LikeQuerySpec
🔲 ListOneToManyOrderingSpec
🔲 MapOfDomainsSpec
🔲 MarkDirtyFalseSpec
🔲 MongoCascadeSpec
🔲 MongoDynamicPropertyOnEmbeddedSpec
🔲 MongoEntityConfigSpec
🔲 MongoGormEnhancerSpec
🔲 MongoResultsListIndexSpec
🔲 MongoTypesSpec
🔲 NegateInListSpec
🔲 NegationEnumSpec
🔲 NullifyPropertySpec
🔲 NullsAreNotStoredSpec
🔲 ObjectIdPersistenceSpec
🔲 ObjectIdPropertySpec
🔲 OneToManyWithInheritanceSpec
🔲 OneToOneIntegritySpec
🔲 OneToOneNoReferenceSpec
🔲 OptimisticLockingWithExceptionSpec
🔲 OrderWithPaginationSpec
🔲 PersistenceEventListenerSpec
🔲 ProjectionsSpec
🔲 QueriesWithIdenticallyNamedPartsSpec
🔲 ReadConcernArgumentSpec
🔲 ReadManyObjectsSpec
🔲 ResultsWithGroovyCollectionMethodsSpec
🔲 SchemalessSpec
🔲 SessionCachingSpec
🔲 SetRetrievalSpec
🔲 SimpleHasManySpec
🔲 StatelessSpec
🔲 SwitchDatabaseAtRuntimeSpec
🔲 TestSearchSpec
🔲 TransientPropertySpec
🔲 WhereQueryInCriteriaSpec
🔲 WriteConcernSpec

Reuse successful test results:

🔲 ♻️ Only rerun the tests that failed or were muted before

Click the checkbox to trigger a rerun:

🔲 Rerun jobs


Learn more about TestLens at testlens.app.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants