3

Я Grails noob, поэтому, пожалуйста, извините мой вопрос о noob.
Я создал класс пользователей и устройств домена. Пользователь имеет множество устройств: устройство и устройство принадлежит пользователю: пользователю.
Важно, что только 1 устройство никогда не будет принадлежать двум пользователям, чтобы мой UserController код выглядит следующим образом:Класс домена hasMany не удается добавить запись

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() 
    } 
} 

} 

Но теперь я получаю странное сообщение об ошибке сервера:
нулевого идентификатора входа устройства (не очистить сеанс после возникновения исключения)

Что мне здесь не хватает?

Большое спасибо!

+0

Какова ценность request.JSON? .deviceId? Попробуйте распечатать его с помощью log.info (request.JSON? .deviceId) – Paul

ответ

8

Прежде всего, существуют специальные методы для add to и remove from. Не работайте прямо на коллекциях hasMany. Возможно, это проблематично.

+0

Это действительно проблема. как я уже сказал, - нооб, не знал об этих методах. Спасибо! – Nadav

Смежные вопросы