Получить экземпляр домена по сгенерированному идентификатору

Я использую класс Domain с сгенерированной идентичностью:

class User {
   ...
   static mapping = {
      id generator: 'assigned', name: 'uid'
   }

   Long uid
   ...
}

но когда я пытаюсь получить экземпляр с помощью

User.get(1)

он возвращает ноль. Это работает, если я использую

User.findByUid(uid)

Разве невозможно использовать Domain.get или Domain.read при создании идентификаторов?

2 ответа

Решение

Даже если ваш идентификатор назначен, нет необходимости объявлять атрибут.

class User {
  static mapping = {
    id generator: 'assigned' column: 'uid'
  }
}

Ключевым моментом здесь является сопоставление имени столбца в базе данных.

В дополнение к ответу Серхио

generator стратегия assigned что означает, что приложение должно assign идентификатор при сохранении объекта. Если вы сделали что-то подобное ниже, то вы сможете получить User.get(1) в противном случае возникает исключение при сохранении без присвоения id

def user = new User(id: 1).save(flush: true)

Другие вопросы по тегам