Wie füge ich Einschränkungen für geerbte Eigenschaften in einer Grails-Domain-Unterklasse hinzu?

Hier ist was ich gerne machen würde:

class A {
  String string
  static constraints = {
    string(maxSize:100)
  }
}

class B extends A {
  static constraints = {
    string(url:true)
  }
}

So Klasse A sollte @ habetwa Einschränkungen und B sollten @ habdas gleiche plus zusätzliche Einschränkungen für dieselbe Eigenschaft.

Ich konnte das aber nicht zum Laufen bringen und ich kann mir vorstellen, dass es mit dem Table-per-Hierarchy-Konzept kollidieren würde.

So habe ich versucht, dieses Problem zu umgehen, indem ich ein Command-Objekt mit Einschränkungen der Klasse B einführte, die im Konstruktor der Klasse B validiert werden können. Es scheint jedoch, dass Command-Objekte nur innerhalb von Controllern verwendet werden können (grails sagt immer wieder, dass es keine gibt. validate () Methode dafür).

Also meine Frage ist: Was ist der eleganteste Weg, um dies mit Grails-Einschränkungen zu lösen (ohne die Validierung manuell neu zu implementieren)? Könnte sein..

Zum Table-per-Sub-Class-Konzept wechseln?Ist das Command Object irgendwie in der Domain-Klasse funktionsfähig?Jeder andere Weg?

Bearbeiten Es wäre in Ordnung für mich, alle Einschränkungen in den untergeordneten Klassen zu definieren, die Einschränkungen der übergeordneten Klasse zu wiederholen oder überhaupt keine Einschränkungen in der übergeordneten Klasse zu haben. Die Lösung sollte jedoch für mehrere untergeordnete Klassen (mit unterschiedlichen Einschränkungen) derselben übergeordneten Klasse funktionieren.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage