[英]I am trying to use H2 in-memory database and custom @GenericGenerator strategy but internally my customeId generator is not getting called
我正在使用 H2 數據庫創建一個 spring 引導應用程序,我想使用一些前綴創建一個customId
生成器,但它沒有被創建。
因為我通過擴展SequenceStyleGenerator
創建了FilmsIdGenerator
,如下所示。 但是在為主列show_id
生成值時,不會調用自定義生成器。 它沒有附加我提到的前綴,如 B_00001 理想情況下應該是為主鍵show_id
創建的格式,但它正在創建默認 s1、s2 ... 任何人都可以幫忙
public class FilmsIdGenerator extends SequenceStyleGenerator {
public static final String VALUE_PREFIX_PARAMETER = "valuePrefix";
public static final String VALUE_PREFIX_DEFAULT = "";
private String valuePrefix;
public static final String NUMBER_FORMAT_PARAMETER = "numberFormat";
public static final String NUMBER_FORMAT_DEFAULT = "%d";
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(LongType.INSTANCE, params, serviceRegistry);
valuePrefix = ConfigurationHelper.getString(VALUE_PREFIX_PARAMETER,
params, VALUE_PREFIX_DEFAULT);
numberFormat = ConfigurationHelper.getString(NUMBER_FORMAT_PARAMETER,
params, NUMBER_FORMAT_DEFAULT);
}
}
上面給出的是我的自定義 id 生成器 class ,它應該創建 B_00001 格式的主鍵 id。 但它采用默認序列格式,即 s1、s2、.. 等我使用的是 H2 數據庫。 誰能告訴我為什么沒有在我的主鍵上調用自定義生成器 JPA 正在為持久性生成主鍵 ID?
下面給出的是實體 class 在這里我傳遞我的 customidgenerator 作為策略和 3 個輸入參數我需要生成格式為 B_00001 的主鍵,但它正在生成 s1,s2,.. 即它采用默認序列格式。 為什么我的自定義 id 生成器沒有被應用到它。
因為我通過如下實現 SequenceStyleGenerator 創建了 customIdgenerator,但是在生成主列 show_id 時沒有調用自定義生成器。它沒有附加我提到的前綴,如 B_00001 理想情況下應該是為主鍵 show_id 創建的格式,但它是創建定義
@Table(name = "FILMS")
public class Films implements Serializable, Comparator {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "film_seq")
@GenericGenerator(name = "film_seq", strategy = "com.films.demo.model.generator.FilmsIdGenerator", parameters = {
@Parameter(name = FilmsIdGenerator.INCREMENT_PARAM, value = "50"),
@Parameter(name = FilmsIdGenerator.VALUE_PREFIX_PARAMETER, value = "B_"),
@Parameter(name = FilmsIdGenerator.NUMBER_FORMAT_PARAMETER, value = "%05d") })
@Column(name = "show_id")
private String show_id;
我已將此與 db2 數據庫一起使用。它正在生成具有正確前綴的正確 show_id。 這個問題似乎只存在於 memory 數據庫中的 h2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.