Actually apologies it seems I was doing something wrong.
With the code below you can add the same Tag twice...
def snippet = new Snippet(
title:'Success Test',
category:'dummy',
code:"Simple Test",
tags:[new Tag(name:"test01")]
)
assert snippet.validate() == true
snippet.addToTags(new Tag(name:"test02"))
assert snippet.validate() == true
snippet.addToTags(new Tag(name:"test04"))
assert snippet.validate() == true
snippet.addToTags(new Tag(name:"test04"))
assert snippet.validate() == true
snippet.addToTags(new Tag(name:"test04"))
assert snippet.validate() == true
snippet.addToTags(new Tag(name:"test04"))
assert snippet.validate() == true
snippet.addToTags(new Tag(name:"test04"))
assert snippet.validate() == true
However if i create the Tag object first only a single unqiue entry is added for Tag(name:"test04"). Now I realise the code above creates 5 DIFFERENT Tag objects with the name of test04 but I was wondering why the unique constraint in Tag doesn't fail during validation? I assume this is expected behaviour but I would like to know why? Does the code not cascade constraints?
Thanks
James Hughes | Senior Software Engineer | Kainos | M: +353 (0)877 931 634 |
j.hughes@...
P Please consider the environment and do not print this mail unless necessary
________________________________
From: James Hughes [mailto:
J.Hughes@...]
Sent: Thu 15/05/2008 09:38
To:
user@...
Subject: [grails-user] Adding Unqiueness Constraint To List
Hello,
I am going to try and explain this as best I can. I have 2 domain classes Snippet and Tag - they are reated by a Many-to-Many relationship -- they look like this
class Snippet {
static hasMany = [tags:Tag]
String title
String description
String category
String code
static constraints = {
title(blank:false, nullable:false, maxSize:30)
description(blank:true, nullable:true, maxSize:300)
category(blank:false, nullable:false)
code(blank:false, nullable:false)
tags(size:1..10)
}
}
And tag
class Tag {
static belongsTo = Snippet
static hasMany = [snippets:Snippet]
String name
static constraints = {
name(unique:true, blank:false, nullable:false)
}
boolean equals (Object other) {
name.equals(other.name)
}
}
What I am trying to do is add a constraint to the Snippet domain class so that you can't add the same Tag object twice. I am pretty unsure of how to do this. Can anyone offer assistance?
Thanks
James Hughes | Senior Software Engineer
P Please consider the environment and do not print this mail unless necessary
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email ---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email