2016-02-05 45 views
1

请帮助我找出解决问题的方法。 我在我的实体中有一个String类型的属性,它不是主键。 这将作为系统为我的项目中的用户生成唯一的配置文件ID。 我想自动生成这个值就像一个特定大小的随机字符串。使用jpa自动生成字符串非主键值

请你帮我解决一下。 我已经尝试了@Generator和自定义ID生成器类。但仍然为空插入到数据库中的字段。

我正在使用玛丽亚db。

回答

1

嗨,你可以使用休眠事件。

@PostPersist执行实体管理器持久操作后实际执行或级联。这个调用在数据库INSERT执行后被调用。

从Java 5开始,UUID类提供了一种简单的方法来生成唯一标识符。由UUID生成的标识符实际上是通用的唯一标识符。

请按照示例示例。

public class TestModel { 
    @Column("column_name") 
    private String uid; 

    //setter and getter for uid 

@PrePersist 
protected void onCreate() { 
    // set the uid 
    setUid(java.util.UUID.randomUUID()); 

} 
} 

有关@PrePersist的更多信息,请点击以下链接。 https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/listeners.html

+0

感谢Sudhakar.Implemented @PrePersist,问题解决了。 –