我有一个包含现有数据的数据库,以前我一直在db上使用AUTO_INCREMENT来生成PK。
为了提高性能并促进批量插入,我正在尝试引入不同的密钥生成策略:
public class BaseEntity implements Serializable {
@Id
@GeneratedValue(generator="generator")
@GenericGenerator(
name="generator", strategy="hilo")
private Integer id;
我发现很难找到@GenericGenerator
语法的文档,所以我不确定我是否正确实现了它。据我了解,这个生成器为执行INSERT的实体生成PK,因此无需插入后查询来发现pk。
然而,当尝试执行INSERT时,它会导致org.hibernate.NonUniqueObjectException
异常 - 可能是因为hibernate试图用于PK的值已被采用。
我的理解是否正确,如果是 - 如何配置Hibernate在启动时读取相应的表并选择较低的PK边界?
答案 0 :(得分:0)
您似乎正在使用tablehilo
。无论如何,Generator
代码对于解决问题非常重要。因此,请提供相关的代码段。
此外,我强烈建议您查看this approach here,如果您还没有。