Я использую генератор идентификатора пользовательской последовательности для генерации первичного ключа .Я хочу добавить динамический префикс к первичному ключу перед сохранением объекта в базе данных.
Вот мой класс Entity.
@Entity
@Table(name = "PRODUCT")
@Getter
@Setter
@NoArgsConstructor
public class Product implements Serializable {
private static final long serialVersionUID = -788207637359711534L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"PRODUCT_SEQ")
@GenericGenerator(name = "PRODUCT_SEQ", strategy =
"com.bbi.fam.utils.StringPrefixedSequenceIdGenerator", parameters = {
@Parameter(name = StringPrefixedSequenceIdGenerator.INCREMENT_PARAM,
value = "10")})
@Column(name = "ID")
@Length(max = 50)
private String id;
@Column(name = "NAME")
private String name;
@Transient
private String prefix;
public Product(@Length(max = 50) String id, String name, String prefix) {
this.id = id;
this.name = name;
this.prefix = prefix;
}
}
, а вот мой класс генератора пользовательских идентификаторов.
public class StringPrefixedSequenceIdGenerator extends SequenceStyleGenerator {
private String format;
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
return String.format(format, super.generate(session, object));
}
@Override
public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
super.configure(LongType.INSTANCE, params, serviceRegistry);
String valuePrefix = null;
valuePrefix = ConfigurationHelper.getString("valuePrefix", params, "test" );
String numberFormat = ConfigurationHelper.getString("numberFormat", params, "%06d");
format = valuePrefix + numberFormat;
}
}
Я хочу использовать valuePrefix в качестве динамического.Можете ли вы указать мне, как это сделать