一尘不染

如何在JPA / Hibernate中将@Id与字符串类型一起使用?

hibernate

我有一个包含字符串类型主键的实体。该实体模型如下:

@Entity
public class MyEntity {

@Id
@Column(name="PR_KEY", unique=true)
private String prKey;

....
....

}

但是我面临说TypeMismatch的问题。

org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.String, got class java.lang.Long

阅读 401

收藏
2020-06-20

共1个答案

一尘不染

如果您未指定ID生成策略,则Hibernate将使用GenerationType.AUTO。这将导致

AUTO-标识列,序列或表,具体取决于基础数据库。

如果你看看这里,你会发现所有的生成类型的IDSlongshortint,不是类型String

假设您要使用StringUUID作为ID,则可以使用

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "PR_KEY")
private String prKey;
2020-06-20