我有一个实体,它包含字符串类型的主键。该实体模型如下:
@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
发布于 2013-09-05 04:05:33
检查数据库表中的PR_KEY数据类型。如果列的类型是Number,并且您试图将其映射到实体中的字符串,则可能会发生此问题。
这同样适用于具有生成的Ids的coulmn。
发布于 2013-09-05 04:05:33
当字符串用作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);
https://stackoverflow.com/questions/18622716
复制相似问题