В документе grails указано, что по умолчанию hasMany - это набор. Мой домен выглядит следующим образом:grails, hasMany, набор и дубликаты
class Employee {
String name;
String empId;
String password;
String contactNumber;
String emailId;
static hasMany = [roles : Role]
static belongsTo = [department : Department]
static constraints = {
contactNumber nullable : true
emailId nullable : true
empId unique : true
roles nullable : true
department nullable : true
}
static mapping = {
sort name : "asc"
}
}
//Role class
class Role {
String role;
String roleId;
}
И следующий код в контроллере позволяет добавлять дублирующиеся записи в «ролей»:
roleListToBeAdded.each { r ->
println "Trying to add ${r}"
try {
employee.addToRoles(r).save(flush:true)
} catch (Exception e) {
println "failed to add ${r}: ${e}"
}
}
почему это так?
Примечание: Если roleListToBeAdded имеет несколько записей той же роли (ибо пример: если запрос JSON выглядит следующим образом: { "rolesToBeAdded": [{ "роль": 33}, { "роль": 33} }), то он не добавляется два раза, но если сказать, что роль 33 уже добавлена, и я делаю новый запрос еще раз с ролью: 33, то он добавляет еще одну запись в таблицу employee_role.
Что делает 'Role' класс выглядеть, в частности, его' 'equals' и hashCode' реализации? –
Я отредактировал сообщение и включил класс Role. – vikas