我有一个包含字符串类型主键的实体。该实体模型如下:@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的库伦。

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);
添加回答
举报
0/150
提交
取消