Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Not A Bug
-
Affects Version/s: 1.0.3
-
Fix Version/s: 1.0.4
-
Component/s: Persistence
-
Labels:None
Description
GrailsDomainConfigurationUtil expects to be able to cast UserType implementations to GroovyObject which is not possible if the UserType is written in Java. For example:
class PersistentThing {
org.joda.time.DateTime timestamp
static embedded = ['timestamp']
static mapping = {
timestamp type: org.joda.time.contrib.hibernate.PersistentDateTimeTZ
}
}
Causes the stack trace:
java.lang.ClassCastException: org.joda.time.DateTime cannot be cast to groovy.lang.GroovyObject
at org.codehaus.groovy.grails.commons.GrailsDomainConfigurationUtil.evaluateConstraints(GrailsDomainConfigurationUtil.java:319)
at org.codehaus.groovy.grails.commons.DefaultGrailsDomainClassProperty$ComponentDomainClass.<init>(DefaultGrailsDomainClassProperty.java:496)
at org.codehaus.groovy.grails.commons.DefaultGrailsDomainClassProperty.setEmbedded(DefaultGrailsDomainClassProperty.java:442)
at org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass.establishDomainClassRelationship(DefaultGrailsDomainClass.java:455)
at org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass.establishRelationships(DefaultGrailsDomainClass.java:241)
at org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass.<init>(DefaultGrailsDomainClass.java:98)
at org.codehaus.groovy.grails.commons.DomainClassArtefactHandler.newArtefactClass(DomainClassArtefactHandler.java:34)
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:653)
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.configureLoadedClasses(DefaultGrailsApplication.java:331)
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.initialise(DefaultGrailsApplication.java:859)
Activity
- All
- Comments
- Work Log
- History
- Activity
- Git Commits
Remove the line
static embedded = ['dateTime']
Only GORM domain classes can be embedded, not user types