首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JPA / Hibernate中使用带有String类型的@Id?

如何在JPA / Hibernate中使用带有String类型的@Id?
EN

Stack Overflow用户
提问于 2013-09-05 03:57:46
回答 2查看 68.1K关注 0票数 37

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

代码语言:javascript
复制
@Entity
public class MyEntity {

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

....
....

}

但我正面临着说TypeMismatch的问题。

代码语言:javascript
复制
org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.String, got class java.lang.Long
EN

回答 2

Stack Overflow用户

发布于 2013-09-05 04:05:33

检查数据库表中的PR_KEY数据类型。如果列的类型是Number,并且您试图将其映射到实体中的字符串,则可能会发生此问题。

这同样适用于具有生成的Ids的coulmn。

票数 3
EN

Stack Overflow用户

发布于 2013-09-05 04:05:33

当字符串用作id时,通过Session/EntityManager查找实体时也应使用相同的类型:

而不是提供Long:

代码语言:javascript
复制
Long key = 1L;
MyEntity me = session.get(MyEntity.class, key); 
//or 
MyEntity me = entityManager.find(MyEntity.class, key); 

应提供字符串:

代码语言:javascript
复制
String key = "1";
MyEntity me = session.get(MyEntity.class, key); 
//or 
MyEntity me = entityManager.find(MyEntity.class, key); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18622716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档