Как заставить Play создавать новый идентификатор (автоинкремент) при слиянии с существующим объектом - PullRequest
0 голосов
/ 13 июля 2011

Сейчас я делаю это, но, похоже, это не работает правильно. Спасибо за любую помощь.

   public static void submit(@Valid WrapSpec wrapSpec) { 
        if (validation.hasErrors()) { 
            render("@index", wrapSpec); 
        } 
 JPA.em().detach(wrapSpec); 
            wrapSpec.wrapSpecId = null; 
            WrapSpec wrapSpecNew = wrapSpec.merge(); 
} 

1 Ответ

1 голос
/ 13 июля 2011

Если вы используете класс Play в своем объекте, у них есть поле автоматического автоинкремента с именем "id".

Единственный безопасный способ переназначения этого идентификатора - создать новый объект и скопировать все свойства (ожидаемый идентификатор) из старого объекта в новый, а затем сохранить его. JPA назначит новый идентификатор.

Любой другой способ может создать несоответствия базы данных или неожиданное поведение в JPA / Play.

Из любопытства, почему вы хотели бы изменить идентификатор, когда-то назначенный? Я не понимаю, как это может быть полезно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...