相关文章推荐
痴情的火龙果  ·  CSS 单位 | 菜鸟教程·  1 年前    · 
有胆有识的灌汤包  ·  Prune My Recent ...·  1 年前    · 
健身的钥匙  ·  Spring Data ...·  1 年前    · 

随后进入判定

return this.invokeSaveLifecycle(entity, persister, source) ? id : this.performSaveOrReplicate(entity, key, persister, useIdentityColumn, anything, source, requiresImmediateIdAccess);

未通过persister.implementsLifecycle() 判定 返回了false

 protected boolean invokeSaveLifecycle(Object entity, EntityPersister persister, EventSource source) {
        if (persister.implementsLifecycle()) {
            LOG.debug("Calling onSave()");
            if (((Lifecycle)entity).onSave(source)) {
                LOG.debug("Insertion vetoed by onSave()");
                return true;
        return false;
public boolean implementsLifecycle() {
        return this.getEntityTuplizer().isLifecycleImplementor();

自定义策略

* 当新数据指定了自定义id时 使用自定义id * 参考: * https://stackoverflow.com/questions/11667929/jpa-override-auto-generated-id * https://jianshu.com/p/db5f10b546df public class CustomUUIDGenerator extends UUIDGenerator {  @Override  public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {    try {      Serializable id = session.getEntityPersister(null, object).getClassMetadata().getIdentifier(object, session);      if (id != null)        //TODO 未生效        return id;   } catch (Exception e) {      return super.generate(session, object);    return super.generate(session, object);  @GeneratedValue(generator = "custom-uuid-generator")  @GenericGenerator(name = "custom-uuid-generator", strategy = "com.ect.core.entity.CustomUUIDGenerator")  @Column(name = "UUID", nullable = false, columnDefinition = "char(32)")  private String id;

参考链接:

stackoverflow.com/questions/3…

stackoverflow.com/questions/1…

jianshu.com/p/db5f10b54…