我正在使用Oracle数据库来管理一个带有String主键的JPA实体。我不能在数据库中将PK上的类型修改为Long或int,所以我想知道如何在我的JPA实体中配置pk序列,我已经尝试过了:
@Id
@SequenceGenerator(name="SEQ_ID", sequenceName = "SEQ_ID" )
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ID")
@Column(name="SEQ_ID",unique=true, nullable = false,updatable = false)
private String id;
但是当持久化一个新的实体时,我得到了一个错误:id的未知整数数据类型:有人能帮帮我吗?
2条答案
按热度按时间kqhtkvqz1#
尝试删除@GeneratedValue和@SequenceGenerator另外,一个注解@Id将自动设置
unique=true, nullable = false,updatable = false
,因此您可以从@Column中删除它们。否则,您可以查看本文以获取有关创建自定义字符串生成器https://vladmihalcea.com/how-to-implement-a-custom-string-based-sequence-identifier-generator-with-hibernate/的更多详细信息
p8ekf7hl2#
您必须编写自定义序列字符串生成器类,并将该类添加为@GenericGenerator的stratergy,如下所示
实体类应该如下所示: