Hibernate手动和自动生成的主键

问题描述 投票:1回答:1

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

sql hibernate jpa orm primary-key
1个回答
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")
© www.soinside.com 2019 - 2024. All rights reserved.