« Return to Thread: Adding Unqiueness Constraint To List

RE: Adding Unqiueness Constraint To List

by kouphax :: Rate this Message:

Reply to Author | View in Thread

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

winmail.dat (11K) Download Attachment

 « Return to Thread: Adding Unqiueness Constraint To List

LightInTheBox - Buy quality products at wholesale price