Hibernate手动和自动生成的主键

时间:2017-11-16 09:20:06

标签: sql hibernate jpa orm primary-key

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

1 个答案:

答案 0 :(得分: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")