Как сохранить сущность с моим идентификатором - PullRequest
0 голосов
/ 03 марта 2012

Как установить идентификатор в модели?Я пытаюсь этот код:

public Community(Long id, ...) {
    this.id = id;
    ....
}

Но когда я делаю это:

Communtiy c = new (1, ...);
c.save();

Hibernate говорят:

Execution exception PersistenceException occured : org.hibernate.PersistentObjectException: detached entity passed to persist: models.Community

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Вы можете сделать это путем расширения от play.db.jpa.GenericModel вместо play.db.jpa.Model. Это позволит вам установить первичный ключ вручную.

На самом деле то, что делает Model, это расширение от GenericModel, и потому что это очень распространено, Model автоматически генерирует первичные ключи (используя @Id @GeneratedValue public Long id). Но если по какой-либо причине вы хотите установить пользовательский первичный ключ, то расширение от GenericModel - путь.

Официальная документация здесь.

Пример

@Entity
public class Community extends GenericModel {
    @Id
    public Long id;

    public Community (Long id) {
        this.id = id;
    }
}
0 голосов
/ 03 марта 2012

Попробуйте не устанавливать id самостоятельно, id должен быть загружен в модель после сохранения.

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