设置@GenericGenerator的分配大小

Jam*_*mes 5 java orm hibernate jpa

我以前有一个@SequenceGenerator带参数的代码allocationSize=1

我需要SequenceGenerator使用custom 覆盖@GenericGenerator。但是,我看不到allocationSize在自定义GenericGenerator策略类中指定参数的方法。我能做什么?

jay*_*iya 2

我已经得到了答案,是的,我可以创建一个 CustomGenerator,然后使用 @GenericGenerator,并在该 CustomGenerator 中使用如下代码:

public class UseExistingOrGenerateIdGenerator extends SequenceHiLoGenerator {
    @Override
    public Serializable generate(SessionImplementor session, Object object) throws HibernateException {
        Serializable id = session.getEntityPersister(null, object).getClassMetadata().getIdentifier(object, session);
        return id != null ? id : super.generate(session, object);
    }

    @Override
    public void configure(Type type, Properties params, Dialect dialect) throws MappingException {

        params.put(org.hibernate.id.SequenceGenerator.SEQUENCE, "HIBERNATE_SEQUENCE");

        params.put(SequenceHiLoGenerator.MAX_LO, String.valueOf("49"));
        super.configure(type, params, dialect);
    }

}
Run Code Online (Sandbox Code Playgroud)