Can not set java.lang.Integer field to java.lang.Integer

hibernate, hql, java, persistence

Solution

What happens if you change your HQL query to `from UserPattern where user.id = :user_id and pattern.id = :pattern_id`?

I think Hibernate is confusing objects and ID fields.

Problem

User declaration: ``` @Entity public class User { @Id @GeneratedValue private Integer id; .... ``` Pattern declaration: ``` @Entity public class Pattern { @Id @GeneratedValue Integer id; ... ``` UserPatternDeclaration: ``` public class UserPattern { @Id @GeneratedValue Integer id; @ManyToOne @JoinColumn(name = "user_id") User user; @ManyToOne @JoinColumn(name = "pattern_id") Pattern pattern; ... ``` request to database: ``` 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 ``` I got following exception: ``` ... 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) .... ``` Please help to fix this issue. error message looks very very strange. I have read related topic click but I don't found out answer. P.S. hibernate log(before exception): ``` 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=? ``` In browser I see following message: ``` HTTP Status 500....could not get a field value by reflection getter of...model.User.id ```

Original source

Related problems