bounty将在5天后到期。回答此问题可获得+50声望奖励。user352290正在寻找来自信誉良好的来源的答案。
我想通过将序列名order_sequence
动态传递给这个类来重用Counter,如何实现呢
public class Counter {
@Id
@GeneratedValue(generator = "sequence-generator")
@GenericGenerator(name = "sequence-generator", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
@Parameter(name = "sequence_name", value = "order_sequence"),
@Parameter(name = "initial_value", value = "1"), @Parameter(name = "increment_size", value = "1") })
private Long counter;
}
3条答案
按热度按时间kadbb4591#
主要思想可以通过以下方式覆盖
org.hibernate.id.enhanced.SequenceStyleGenerator
:MappedSuperClass:
儿童班级:
46qrfjad2#
要在JPA中动态创建序列生成器,您可以使用@GenericGenerator annotation并在运行时定义参数。请参见下面的示例:
请参阅构造函数的定义,该构造函数接受序列名称,初始值和增量大小作为参数。它创建一个新的GenericGenerator对象并重写其parameters方法以返回基于输入的参数字符串数组。我们还重写其strategy方法以返回Hibernate序列生成器。然后将此生成器设置为@GenericGenerator annotation的值。
然后,您可以通过调用新的构造函数并传入所需的值来创建具有不同序列名称的Counter类的示例:
oxosxuxt3#
要在JPA中动态创建序列生成器,可以使用以下步骤:
1.定义一个自定义注解,以便对要生成动态序列的字段进行注解。
1.更新Counter类以使用自定义注解。
1.创建IdentifierGenerator接口的自定义实现以生成动态序列。
1.使用Hibernate注册自定义生成器。
通过这些更改,您现在可以通过使用DynamicSequenceGenerator注解来注解字段并将序列名称作为参数传递来生成动态序列。