为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2019-12-04 10:38:04
我有一个包含字符串类型主键的实体。该实体模型如下:@Entitypublic 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
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

检查数据库表中的PR_KEY数据类型。如果列的类型为Number,并且您尝试将其映射到实体中的String,则可能会出现此问题。


同样适用于带有生成的ID的库伦。


查看完整回答
反对 回复 2019-12-04
?
FFIVE

TA贡献1797条经验 获得超6个赞

如果将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); 


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 1494 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信