java - 无需 Hibernate 的自定义 @Id 生成器

标签 java hibernate jpa

以下 id 生成是否可以在不依赖 Hibernate @GenericGenerator 且仅使用纯 JPA 的情况下实现?

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.annotations.GenericGenerator;

@Entity
public class MyObject implements Serializable {

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "my.IdGenerator")
    @Column(name = "ID", length = 36, nullable = false)
    private String id;

    // ...
}

最佳答案

您可以使用@PrePersist回调

@Id
@Column(name = "ID", length = 36, nullable = false)
private String id;

// ...

@PrePersist
public void prePersist() {
   id = UUID.randomUUID(); 
} 

有关生命周期回调的更多信息,请参见:Configuring a Life Cycle Callback Method on a JPA Entity

关于java - 无需 Hibernate 的自定义 @Id 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026649/

相关文章:

java - 错误 :Execution failed for task , 以非零退出值 1 结束

java - JSON前缀有什么用?

Java servlet 和持久性结构

java - 如何在 Spring boot 中使用 JPA 中的 Criteria?

jpa - 使用 Play Framework 提交事务

java - super() 应该隐式调用还是显式调用?

hibernate - MultiTenant Hibernate + Spring boot - 如何防止它在服务器启动期间查找连接

java - JBoss 5.1.0.GA 中的 Hibernate 3.5-Final

java - Spring : 2 EntityManagerFactory in 1 transaction

java - 使用jpa限制数字列的长度