Estoy muy cerca de una solución, pero todo sigue mal, espero obtener ayuda, gracias de antemano.grails composite "restricción única", pero ¿cómo?
que tienen un modelo de dominio del cliente como:
class BoCustomer implements Serializable{
String firstName
String lastName
String emailID
Company company
}
Por lo tanto, tienen una clave primaria = "id" que está bien. Además, necesito una clase de restricción única que "verifique" lo siguiente: "solo una dirección de correo electrónico única para una empresa", de modo que se permita la inserción del mismo correo electrónico, pero solo para empresas diferentes. Inserción ([email protected], empresa-id: 1) y la inserción ([email protected], empresa-id: 1) no está permitido, pero la inserción ([email protected], id-compañía: 1) e insertar ([email protected], id-compañía: 2) está permitido.
así que he intentado hasta ahora:
static mapping = {
id column: "customer_id", generator: "identity"
emailcompany composite: ['emailID', 'company'], unique: true
}
(parece ser "bueno", pero no es exactamente lo que quiero)
pero no quieren otra columna, en mi intento llamados " emailcompany "- pero necesito algo así como una restricción única.
Hola Kaleb, gracias por su respuesta, pero lo siento. Probé tu código, pero aún es posible agregar el mismo correo electrónico con el mismo ID de empresa dos veces (y más) :-( – grailsInvas0r
¿Ejecutas un .validate() en la instancia de BoCustomer antes de llamar a .save()? Y si entonces, la validación devuelve verdadero? –
Sí, ejecuto un .validate() antes de llamar a .save(). Y me está devolviendo "verdadero" sí, lo revisé con un punto de corte de depurador y una variable de prueba - está volviendo desafortunadamente: - \ – grailsInvas0r