最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java - Replace custom id generation logic in hibernate 6 - Stack Overflow

programmeradmin5浏览0评论

I am migrating a project to spring boot 3 and hibernate 6.

I had this class that was used to generate ids if they were not provided:

import java.io.Serializable;

import .hibernate.HibernateException;
import .hibernate.engine.spi.SessionImplementor;
import .hibernate.id.IdentityGenerator;
import .springframework.beans.BeanWrapper;
import .springframework.beans.PropertyAccessorFactory;

public class UseIdOrGenerate extends IdentityGenerator {
    
//  @Override
    public Serializable generate(SessionImplementor session, Object obj) {
        if (obj == null)
            throw new HibernateException(new NullPointerException());
            
        BeanWrapper forBeanPropertyAccess = PropertyAccessorFactory.forBeanPropertyAccess(obj);
        if (!forBeanPropertyAccess.isReadableProperty("id") || forBeanPropertyAccess.getPropertyValue("id") == null) {
            return super.generate(session, obj);
        } else {
            return (Serializable) forBeanPropertyAccess.getPropertyValue("id");
        }
    }
}

Now in hibernate 6 this no longer works.

I thought I would replace it like this:

import .hibernate.engine.spi.SharedSessionContractImplementor;
import .hibernate.id.IdentifierGenerator;
import .springframework.beans.BeanWrapper;
import .springframework.beans.PropertyAccessorFactory;

public class UseIdOrGenerate implements IdentifierGenerator {

    @Override
    public Object generate(SharedSessionContractImplementor session, Object entity) {
        BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(entity);
        Object currentId = beanWrapper.getPropertyValue("id");

        if (currentId != null) {
            return currentId;
        } else {
            return super.generate(session, entity)
        }
    }
}

But the generate method no longer exists.

What is the correct way to do this in hibernate 6?

发布评论

评论列表(0)

  1. 暂无评论