jpa插入让主键id使用自定义值

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "idOrGenerate")
    @GenericGenerator(name = "idOrGenerate", strategy = "com.sunlands.util.IdOrGenerate")
    Integer id;
package com.sunlands.util;

import com.sunlands.domain.ReturnMessageDO;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.id.IdentityGenerator;
import java.io.Serializable;

public class IdOrGenerate extends IdentityGenerator {
    @Override
    public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {
        if (obj == null){
            throw new HibernateException(new NullPointerException()) ;
        }
        if ((((ReturnMessageDO) obj).getId()) == null) {//id is null it means generate ID
            Serializable id = super.generate(session, obj) ;
            return id;
        } else {
            return ((ReturnMessageDO) obj).getId();//id is not null so using assigned id.

        }
    }
}

猜你喜欢

转载自blog.csdn.net/qazwsx081/article/details/88427794