【发布时间】:2014-09-01 20:24:18
【问题描述】:
用户声明:
@Entity
public class User {
@Id
@GeneratedValue
private Integer id;
....
模式声明:
@Entity
public class Pattern {
@Id
@GeneratedValue
Integer id;
...
用户模式声明:
public class UserPattern {
@Id
@GeneratedValue
Integer id;
@ManyToOne
@JoinColumn(name = "user_id")
User user;
@ManyToOne
@JoinColumn(name = "pattern_id")
Pattern pattern;
...
对数据库的请求:
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from UserPattern where user = :user_id and pattern = :pattern_id ");
query.setParameter("user_id", userId);
query.setParameter("pattern_id", pattern_id);
List<UserPattern> list = query.list();//exception throws here
我遇到了以下异常:
...
java.lang.IllegalArgumentException: Can not set java.lang.Integer field
com.....s.model.User.id to java.lang.Integer
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
at java.lang.reflect.Field.get(Field.java:379)
....
请帮助解决此问题。
错误信息看起来非常非常奇怪。
我已经阅读了相关主题click,但我没有找到答案。
附言
休眠日志(异常前):
Hibernate:
select
userpatter0_.id as id1_2_,
userpatter0_.amountSearched as amountSe2_2_,
userpatter0_.amountplayed as amountpl3_2_,
userpatter0_.pattern_id as pattern_4_2_,
userpatter0_.user_id as user_id5_2_
from
UserPattern userpatter0_
where
userpatter0_.user_id=?
and userpatter0_.pattern_id=?
在浏览器中我看到以下消息:
HTTP Status 500....could not get a field value by reflection getter of...model.User.id
【问题讨论】:
-
你有那个 id 字段的 getter 和 setter 吗?
-
是的,我有所有领域的getter和setter
-
“pattern_id”和“pattern_id”的区别是什么?
-
@Pimgd - 已修复,重新创建数据库表(drope 然后创建)但我看到旧结果
-
您使用的是什么类型的数据库?您可以使用该代码毫无问题地检索空结果集吗?您可以通过 from user where id = 来检索 User 对象吗?查询?
标签: java hibernate persistence hql