This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch merge-hibernate6 in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 143640fcf95cc28aa52a4262c2175606423c97ec Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sun Sep 7 20:41:49 2025 -0500 Fixed EnumSpec --- .../cfg/domainbinding/EnumTypeBinder.java | 6 +- .../cfg/domainbinding/GrailsEnumType.java | 15 ++++ .../grails/data/testing/tck/tests/EnumSpec.groovy | 85 +++++++++++++--------- 3 files changed, 68 insertions(+), 38 deletions(-) diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/EnumTypeBinder.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/EnumTypeBinder.java index 0da72db063..9b98e8c915 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/EnumTypeBinder.java +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/EnumTypeBinder.java @@ -49,15 +49,15 @@ public class EnumTypeBinder { if (typeName != null) { simpleValue.setTypeName(typeName); } else { - if (DEFAULT_ENUM_TYPE.equals(enumType) || "string".equalsIgnoreCase(enumType)) { + if (GrailsEnumType.DEFAULT.getType().equals(enumType) || GrailsEnumType.STRING.getType().equalsIgnoreCase(enumType)) { simpleValue.setTypeName(ENUM_TYPE_CLASS); enumProperties.put(EnumType.TYPE, String.valueOf(Types.VARCHAR)); enumProperties.put(EnumType.NAMED, Boolean.TRUE.toString()); - } else if ("ordinal".equalsIgnoreCase(enumType)) { + } else if (GrailsEnumType.ORDINAL.getType().equalsIgnoreCase(enumType)) { simpleValue.setTypeName(ENUM_TYPE_CLASS); enumProperties.put(EnumType.TYPE, String.valueOf(Types.INTEGER)); enumProperties.put(EnumType.NAMED, Boolean.FALSE.toString()); - } else if ("identity".equals(enumType)) { + } else if (GrailsEnumType.ORDINAL.getType().equals(enumType)) { simpleValue.setTypeName(IdentityEnumType.class.getName()); } else { throw new MappingException("Invalid enum type [" + enumType + "]."); diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsEnumType.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsEnumType.java new file mode 100644 index 0000000000..0ce19f0f79 --- /dev/null +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsEnumType.java @@ -0,0 +1,15 @@ +package org.grails.orm.hibernate.cfg.domainbinding; + +public enum GrailsEnumType +{ + DEFAULT("default"), STRING("string"), ORDINAL("ordinal"), IDENTITY("identity"); + private final String type; + + private GrailsEnumType(String type) { + this.type = type; + } + + public String getType() { + return type; + } +} diff --git a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/EnumSpec.groovy b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/EnumSpec.groovy index e51de2c3be..5464c8a146 100644 --- a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/EnumSpec.groovy +++ b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/EnumSpec.groovy @@ -59,52 +59,67 @@ class EnumSpec extends GrailsDataTckSpec { new EnumThing(name: 'e2', en: TestEnum.V1).save(failOnError: true) new EnumThing(name: 'e3', en: TestEnum.V2).save(failOnError: true) - EnumThing instance1 - EnumThing instance2 - EnumThing instance3 + List instance1 + List instance2 + List instance3 when: - instance1 = EnumThing.findByEnInList([TestEnum.V1]) - instance2 = EnumThing.findByEnInList([TestEnum.V2]) - instance3 = EnumThing.findByEnInList([TestEnum.V3]) + instance1 = EnumThing.findAllByEn(TestEnum.V1) + instance2 = EnumThing.findAllByEn(TestEnum.V2) + instance3 = EnumThing.findAllByEn(TestEnum.V3) then: - instance1 != null - instance1.en == TestEnum.V1 + instance1.size() == 2 + instance1.every { it.en == TestEnum.V1 } - instance2 != null - instance2.en == TestEnum.V2 + instance2.size() == 1 + instance2.every { it.en == TestEnum.V2 } - instance3 == null + instance3.isEmpty() + + when: + instance1 = EnumThing.findAllByEnInList([TestEnum.V1]) + instance2 = EnumThing.findAllByEnInList([TestEnum.V2]) + instance3 = EnumThing.findAllByEnInList([TestEnum.V3]) + + then: + instance1.size() == 2 + instance1.every { it.en == TestEnum.V1 } + + instance2.size() == 1 + instance2.every { it.en == TestEnum.V2 } + + instance3.isEmpty() } - void "Test findBy()"() { + void "Test findAllBy()"() { given: new EnumThing(name: 'e1', en: TestEnum.V1).save(failOnError: true) new EnumThing(name: 'e2', en: TestEnum.V1).save(failOnError: true) new EnumThing(name: 'e3', en: TestEnum.V2).save(failOnError: true) - EnumThing instance1 - EnumThing instance2 - EnumThing instance3 + List instance1 + List instance2 + List instance3 when: - instance1 = EnumThing.findByEn(TestEnum.V1) - instance2 = EnumThing.findByEn(TestEnum.V2) - instance3 = EnumThing.findByEn(TestEnum.V3) + instance1 = EnumThing.findAllByEn(TestEnum.V1) + instance2 = EnumThing.findAllByEn(TestEnum.V2) + instance3 = EnumThing.findAllByEn(TestEnum.V3) then: - instance1 != null - instance1.en == TestEnum.V1 + instance1.size() == 2 + instance1.every { it.en == TestEnum.V1 } + + instance2.size() == 1 + instance2.every { it.en == TestEnum.V2 } - instance2 != null - instance2.en == TestEnum.V2 + instance3.isEmpty() - instance3 == null } - void "Test findBy() with clearing the session"() { + void "Test findAllBy() with clearing the session"() { given: new EnumThing(name: 'e1', en: TestEnum.V1).save(failOnError: true, flush: true) @@ -112,23 +127,23 @@ class EnumSpec extends GrailsDataTckSpec { new EnumThing(name: 'e3', en: TestEnum.V2).save(failOnError: true, flush: true) manager.session.clear() - EnumThing instance1 - EnumThing instance2 - EnumThing instance3 + List instance1 + List instance2 + List instance3 when: - instance1 = EnumThing.findByEn(TestEnum.V1) - instance2 = EnumThing.findByEn(TestEnum.V2) - instance3 = EnumThing.findByEn(TestEnum.V3) + instance1 = EnumThing.findAllByEn(TestEnum.V1) + instance2 = EnumThing.findAllByEn(TestEnum.V2) + instance3 = EnumThing.findAllByEn(TestEnum.V3) then: - instance1 != null - instance1.en == TestEnum.V1 + instance1.size() == 2 + instance1.every { it.en == TestEnum.V1 } - instance2 != null - instance2.en == TestEnum.V2 + instance2.size() == 1 + instance2.every { it.en == TestEnum.V2 } - instance3 == null + instance3.isEmpty() } void "Test findAllBy()"() {
