如何用我的id保存实体

时间:2012-03-03 06:50:58

标签: java hibernate jpa playframework

如何在模型中设置ID?我试试这段代码:

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 个答案:

答案 0 :(得分:2)

您可以从play.db.jpa.GenericModel而不是play.db.jpa.Model延伸来实现此目的。这将允许您手动设置主键。

事实上,Model的作用是从GenericModel延伸,因为这样做很常见Model会自动生成主键(使用@Id @GeneratedValue public Long id)。但是,如果出于某种原因想要设置自定义主键,那么从GenericModel扩展是可行的方法。

Official documentation here.

实施例

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

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

答案 1 :(得分:0)

请勿尝试自行设置id,保存后应将id加载到模型中。