我有一个运行使用JPA的EAR的JBoss 7.1.1。使用JPA注释,我使用映射到GenerationType.Table
的策略org.hibernate.id.enhanced.TableGenerator
。
有没有人知道在使用“pooled-lo”优化器时如何配置persistence.xml
?
答案 0 :(得分:2)
与此同时,我得到了一个问题的答案。
当您将以下行添加到persistent.xml文件中的<properties>
部分时,hibernate将使用&#34; pooled-lo&#34;优化
<property name="hibernate.id.optimizer.pooled.prefer_lo" value="true" />
答案 1 :(得分:2)
包含pooled-lo optimizer,如果您使用的是Hibernate 3.x或4.x,则必须通过设置以下Hibernate属性来启用增强优化器:
properties.put("hibernate.id.new_generator_mappings", "true");
如果您正在使用Hibernate 5.x,则默认启用此设置。值得注意的是pooled
和pooled-lo
优化器仅适用于SEQUENCE and TABLE generators。
然后,您需要将pooled-lo
标识符生成器添加到@Id
属性中:
@Id
@GenericGenerator(name = "sequenceGenerator",
strategy = "enhanced-sequence",
parameters = {
@org.hibernate.annotations.Parameter(
name = "optimizer", value = "pooled-lo"),
@org.hibernate.annotations.Parameter(
name = "initial_value", value = "1"),
@org.hibernate.annotations.Parameter(
name = "increment_size", value = "3")
}
)
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "sequenceGenerator")
private Long id;
或者像这样:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pooled-lo")
@GenericGenerator(
name = "pooled-lo",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "sequence"),
@Parameter(name = "initial_value", value = "1"),
@Parameter(name = "increment_size", value = "3"),
@Parameter(name = "optimizer", value = "pooled-lo")
}
)
private Long id;