Mam problem, w którym moja klasa domeny ma dwa potencjalne wzajemnie wykluczające się klucze zewnętrzne, albo numer seryjny, albo starszą wartość wyszukiwania.Jak utworzyć i zatwierdzić XOR dla dwóch pól w klasie domeny Grails?
Ponieważ nie jestem pewien, który z nich będę mieć dla danego wpisu, zrobiłem je zarówno zerowalne i dodane niestandardowe sprawdzanie poprawności, aby spróbować zapewnić, że mam jedną i tylko jedną wartość.
package myproject
class Sample {
String information
String legacyLookup
String serialNumber
static constraints = {
information(nullable: true)
legacyLookup(nullable: true)
serialNumber(nullable: true)
legacyLookup validator: {
return ((serialNumber != null && legacyLookup == null) || (serialNumber == null && legacyLookup != null))
}
serialNumber validator: {
return ((serialNumber != null && legacyLookup == null) || (serialNumber == null && legacyLookup != null))
}
}
}
stworzyłem ekrany domyślne CRUD i próbował stworzyć wpis dla tej klasy domeny
information: Blah Blah
serialNumber:
legacyLookup: BLAHINDEX123
Ten umiera w walidator z następującym komunikatem:
No such property: serialNumber for class: myproject.Sample
co ja brakujący?
To zrobiło dokładnie to, czego potrzebowałem. Myślałem, że potrzebuję zatwierdzenia jawnie na obu polach, ale jeden zajmuje się drugim. Dzięki! – GeoGriffin