Hibernate 手动和自动生成的主键

Posted

技术标签:

【中文标题】Hibernate 手动和自动生成的主键【英文标题】:Hibernate manual and auto-generated primary key 【发布时间】:2017-11-16 09:20:05 【问题描述】:

我有一个要求,如果用户输入主键的值,那么我需要在创建实体时使用它,如果用户不提供值,则需要自动生成主键,例如R00001、R0002 等。我想知道如何实现这一目标以及对此的任何指导

【问题讨论】:

【参考方案1】:

尝试利用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")

【讨论】:

以上是关于Hibernate 手动和自动生成的主键的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate的主键生成策略的介绍

Hibernate框架的主键生成策略

hibernate中的主键生成策略

hibernate中的主键生成策略

Hibernate主键生成策略

Hibernate主键生成策略