2012-08-30 5 views
2

Je voudrais créer une classe de domaine de grails qui se lie à elle-même.Grails table qui se lie à lui-même

Ce poste lié suggère une solution, mais je ne peux pas le faire fonctionner: Grails domain class relationship to itself

Pour une chose que je ne comprends pas ce que fait comparable et aurait besoin d'ajouter une méthode int compareTo (obj).

Ajouter ce qui suit à mon code sans mettre en œuvre compiles comparables, mais Grails se bloque lors de l'exécution:

//NavMenu parent 
SortedSet subItems 
static hasMany = [subItems: NavMenu] 
static belongsTo = [parent: NavMenu] 
static constraints = { parent(nullable:true) } 

Merci à l'avance

Répondre

2

Lorsque vous utilisez SortedSet, un algorithme de tri est exécuté en interne, mais il a besoin d'un critère de tri. Vous devez implémenter l'interface Comparable car c'est la manière standard de fournir un critère de tri à l'algorithme interne.

Si vous n'avez pas besoin d'une commande spécifique, vous pouvez supprimer la ligne SortedSet subItems et ainsi éviter d'implémenter l'interface Comparable.

+0

Merci pour votre solution – Chopo87

0

Si vous ne souhaitez pas utiliser d'interface comparable, vous devriez peut-être utiliser List au lieu de SortedSet.

Avec une liste vous pouvez garder les objets dans l'ordre où ils ont été ajoutés et pouvoir les référencer par index comme un tableau.

Voici un exemple de documents officiels:

class Author { 
    List books 

    static hasMany = [books: Book] 
} 
Questions connexes