Estoy usando el módulo CRUD de Play para crear un conjunto simple de pantallas de administración. Uno de mis modelos es Usuario y quiero aplicar una restricción única en el campo del correo electrónico.¿Es posible configurar el módulo CRUD de Play Framework para que respete las anotaciones @Column (unique = true)?
El código es el siguiente:
public class User extends Model {
@Email
@Required
@Column(unique=true)
public String email;
La pantalla de administración se muestra correctamente - cuando intento de romper la singularidad (por el ahorro de un usuario con un correo electrónico que ya se utiliza) me sale este error (en el navegador):
Execution exception
PersistenceException occured : org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
In {module:crud}/app/controllers/CRUD.java (around line 100)
96:
} catch (TemplateNotFoundException e) {
97:
render("CRUD/show.html", type, object);
98:
}
99:
}
100:
<b>object._save();</b>
101:
flash.success(Messages.get("crud.saved", type.modelName));
102:
if (params.get("_save") != null) {
103:
redirect(request.controller + ".list");
104:
}
105:
redirect(request.controller + ".show", object._key());
106:
}
¿Hay algún ajuste que pueda hacer para usar el módulo CRUD Y las anotaciones de singularidad de columna?
Sí, acordaron la restricción está trabajando como me gustaría. Es el parche en el módulo CRUD para que pueda dar una respuesta elegante al usuario que me pregunto. Tal vez esto está más allá del alcance de una herramienta CRUD simple. –