java - 如何使用我的 ID 保存实体

标签 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

最佳答案

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

事实上,Model 所做的是从 GenericModel 扩展而来,并且因为这样做很常见,Model 自动生成主键(通过使用 @Id @GenerateValue public Long id )。但是,如果出于某种原因您想要设置自定义主键,那么从 GenericModel 扩展就是正确的选择。

Official documentation here.

示例

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

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

关于java - 如何使用我的 ID 保存实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544178/

相关文章:

java - 在屏幕上显示 ListView 并通过单击按钮向其添加元素

java - 不支持geode客户端服务器版本-不支持序数为100的对等或客户端版本

hibernate - 让 Hibernate 生成外键索引

java - 合并不同的持久单元

java - 避免在方法级别同步

java - 当按下 JButton 时,JPanel 会更改 JFrame 内的形状/位置。为什么?

java - Hibernate criteria 查询不同对象的不同属性

java - Spring Hibernate产品-类别关系

java - 如何限制将 json 映射到 jpa 对象或从 jpa 对象映射的工作

java - 没有 join 子句的一对多 JPA 查询