Sono molto vicino a una soluzione ma tutto è ancora sbagliato, spero di ricevere aiuto, grazie in anticipo.grails composito "vincolo unico", ma come?
Ho un modello di dominio del cliente come:
class BoCustomer implements Serializable{
String firstName
String lastName
String emailID
Company company
}
Quindi, ho una chiave primaria = "id" va bene così. Quindi ho bisogno di una sorta di vincolo univoco che "controlli" quanto segue: "solo un indirizzo email univoco per una società" in modo che l'inserimento della stessa e-mail sia consentito ma solo per società diverse. Inserimento ([email protected], società-id: 1) e inserendo ([email protected], società-id: 1) non è consentito, ma l'inserimento ([email protected], company-id: 1) e l'inserimento ([email protected], company-id: 2) è consentito.
Così ho provato finora:
static mapping = {
id column: "customer_id", generator: "identity"
emailcompany composite: ['emailID', 'company'], unique: true
}
(sembra essere "buono", ma non esattamente quello che voglio)
ma io non voglio un'altra colonna, nella mia prova chiamato " emailcompany "- ma ho bisogno di qualcosa come un vincolo unico.
Hey Kaleb, grazie per la risposta, ma mi dispiace. Ho provato il tuo codice ma è ancora possibile aggiungere la stessa e-mail con lo stesso ID della società due volte (e più) :-( – grailsInvas0r
Esegui un .validate() nell'istanza BoCustomer prima di chiamare .save()? E se così, la convalida restituisce true? –
Sì, eseguo un .validate() prima di chiamare .save(). E restituisce "true" sì, lo ho controllato con il breakpoint del debugger e una variabile di test - restituisce true purtroppo: - \ – grailsInvas0r