【发布时间】:2017-11-16 09:20:05
【问题描述】:
我有一个要求,如果用户输入主键的值,那么我需要在创建实体时使用它,如果用户不提供值,则需要自动生成主键,例如R00001、R0002 等。我想知道如何实现这一目标以及对此的任何指导
【问题讨论】:
标签: sql hibernate jpa orm primary-key
我有一个要求,如果用户输入主键的值,那么我需要在创建实体时使用它,如果用户不提供值,则需要自动生成主键,例如R00001、R0002 等。我想知道如何实现这一目标以及对此的任何指导
【问题讨论】:
标签: sql hibernate jpa orm primary-key
尝试利用IdentifierGenerator 接口并定义您自己的实现。
public class MyEntityIdGenerator implements IdentifierGenerator{
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
MyEntity entity = (MyEntity)object;
if(entity.getId()==null){
Connection con = session.connection();
// retrieve next sequence val from database for example
return nextSeqValue;
}
}
}
然后在实体的 id 字段上添加适当的注释:
@Id
@GenericGenerator(name="myCustomGen", strategy="com.example.MyEntityGenerator")
@GeneratedValue(generator="myCustomGen")
【讨论】: