Домен класса hasMany не удается добавить запись
Я нуб Грааля, так что, пожалуйста, извините мой нубский вопрос.
Я создал доменные классы пользователя и устройства. Пользователь имеет множество устройств: устройство, а устройство принадлежит пользователю: пользователь.
Важно, что только 1 устройство никогда не будет принадлежать двум пользователям, поэтому мой код UserController выглядит следующим образом:
class UserController {
static allowedMethods = [create: 'POST']
def index() { }
def create() {
def user = User.findByUsername(request.JSON?.username)
def device = Device.findById(request.JSON?.deviceId)
if (device) {
device.user.devices.remove(device)
}
// device can only be owned by 1 person
def new_device = new Device(id: request.JSON?.deviceId, type: request.JSON?.deviceType)
if ( !user ) {
user = new User(
username: request.JSON?.username
)
user.devices = new HashSet() // without this I get null on the add in next line
user.devices.add(new_device)
user.save()
if(user.hasErrors()){
println user.errors
}
render "user.create " + request.JSON?.username + " devices.size " + user.devices.size()
} else {
user.devices.add( new_device )
user.save()
if(user.hasErrors()){
println user.errors
}
render "user.create exists, new token: " + user.token + " devices.size " + user.devices.size()
}
}
}
Но теперь я получаю странную ошибку сервера:
null id в записи устройства (не сбрасывайте сеанс после возникновения исключения)
Чего мне здесь не хватает??
Большое спасибо!
1 ответ:
Прежде всего, существуют специальные методы для добавления к и удаления из. Не действуйте прямо на коллекции hasMany. Может быть, это и проблематично.