-
Notifications
You must be signed in to change notification settings - Fork 199
Closed
Milestone
Description
A domain class defining a composite ID and a multi-column unique constraint fails to save in an integration test.
Excerpt from that domain class:
String firstName, lastName
static mapping = {
id composite: ['firstName', 'lastName']
}
static constraints = {
firstName(unique: ['lastName'])
}
The integration test fails with the following exception:
org.grails.core.exceptions.GrailsRuntimeException: Target of [unique] constraints [composite.id.unique.UniqueWithCompositeId : (unsaved)] is not a domain instance. Unique constraint can only be applied to domain classes and not custom user types or embedded instances
at org.grails.orm.hibernate.validation.UniqueConstraint.processValidate(UniqueConstraint.java:142)
at grails.validation.AbstractConstraint.validate(AbstractConstraint.java:107)
at grails.validation.ConstrainedProperty.validate(ConstrainedProperty.java:979)
at org.grails.validation.GrailsDomainClassValidator.validatePropertyWithConstraint(GrailsDomainClassValidator.java:211)
at org.grails.validation.GrailsDomainClassValidator.validate(GrailsDomainClassValidator.java:81)
at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.save(AbstractHibernateGormInstanceApi.groovy:122)
at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:151)
The multi-column unique constraint works if no composite ID is defined in the domain class.
I attached a sample project showing both cases with one integration test each.
Metadata
Metadata
Assignees
Labels
No labels