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

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


@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


皈依舞
浏览 1495回答 3
3回答

达令说

检查数据库表中的PR_KEY数据类型。如果列的类型为Number,并且您尝试将其映射到实体中的String,则可能会出现此问题。同样适用于带有生成的ID的库伦。

FFIVE

如果将String用作ID,则通过Session / EntityManager查找实体时也应使用相同的类型:而不是提供Long:Long key = 1L;MyEntity me = session.get(MyEntity.class, key); //or MyEntity me = entityManager.find(MyEntity.class, key); 字符串应为:String key = "1";MyEntity me = session.get(MyEntity.class, key); //or MyEntity me = entityManager.find(MyEntity.class, key); 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java