I am using SequenceStyleGenerator to generate like Status__001 and i am facing a deprecated issue when i use this and it is showing type ()instead of strategy ,how can i do that or is there anyother way to generate id like i want without the use of sequencestyle generator
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "status-id-generator")
@GenericGenerator(name = "status-id-generator", strategy = "com.kloc.crm.Entity.CustomIDGenerator",
parameters = {
@Parameter(name = CustomIDGenerator.INCREMENT_PARAM, value = "1"),
@Parameter(name = CustomIDGenerator.VALUE_PREFIX_PARAMETER, value = "task_"),
@Parameter(name = CustomIDGenerator.NUMBER_FORMAT_PARAMETER, value = "%04d")
})
@Column(name = "status_id")
private String StatusId;
//
@Deprecated(since="6.2")
Deprecated. use type() for typesafety
CustomIDGenerator.java
package com.kloc.crm.Entity;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
import org.hibernate.internal.util.config.ConfigurationHelper;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.type.Type;
import org.hibernate.type.spi.TypeConfiguration;
import org.springframework.stereotype.Component;
import java.io.Serializable;
import java.util.Properties;
@Component
public class CustomIDGenerator extends SequenceStyleGenerator {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final String VALUE_PREFIX_PARAMETER = "valuePrefix";
public static final String VALUE_PREFIX_DEFAULT = "";
public static final String NUMBER_FORMAT_PARAMETER = "numberFormat";
public static final String NUMBER_FORMAT_DEFAULT = "%d";
private String valuePrefix;
private String numberFormat;
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
return valuePrefix + String.format(numberFormat, super.generate(session, object));
}
@Override
public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
super.configure(new TypeConfiguration().getBasicTypeRegistry().getRegisteredType(Long.class), params, serviceRegistry);
valuePrefix = ConfigurationHelper.getString(VALUE_PREFIX_PARAMETER, params, VALUE_PREFIX_DEFAULT);
numberFormat = ConfigurationHelper.getString(NUMBER_FORMAT_PARAMETER, params, NUMBER_FORMAT_DEFAULT);
}
}
1 Answer
@GenericGenerator(
name = "wikiSequenceGenerator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "WIKI_SEQUENCE"),
@Parameter(name = "initial_value", value = "1000"),
@Parameter(name = "increment_size", value = "1")
}