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

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

【问题讨论】:

    标签: sql hibernate jpa orm primary-key


    【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 2012-02-25
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 2010-12-11
      • 2019-01-30
      相关资源
      最近更新 更多