无法将java.lang.Integer字段设置为java.lang.Integer [英] Can not set java.lang.Integer field to java.lang.Integer

查看:344
本文介绍了无法将java.lang.Integer字段设置为java.lang.Integer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

用户声明:

  @Entity 
public class User {
@Id
@GeneratedValue
私人整数ID;
....

模式声明:

  @Entity 
公共类模式{
@Id
@GeneratedValue
整数ID;
...

UserPatternDeclaration:

  public class UserPattern {
@Id
@GeneratedValue
Integer id;

@ManyToOne
@JoinColumn(name =user_id)
用户用户;

@ManyToOne
@JoinColumn(name =pattern_id)
模式模式;
...

请求数据库:

  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);
列表< UserPattern> list = query.list(); //异常在这里抛出

我有下面的异常:

  ... 
java.lang.IllegalArgumentException异常:不能设置为java.lang.Integer场
COM .. ... s.model.User.id to java.lang.Integer
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl。 Java的:在sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55 168)

在sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
在java.lang中.reflect.Field.get(Field.java:379)
....



我已阅读相关主题< a href =https://stackoverflow.com/questions/6693950/点击,但我没有找到答案。



PS



hibernate日志(在异常之前):

  Hibernate:
select
userpatter0_.id为id1_2_,
userpatter0_.amountSearched为amountSe2_2_,
userpatter0_.amountplayed为amountpl3_2_,
userpatter0_.pattern_id为pattern_4_2_,
userpatter0_.user_id为user_id5_2_
from
UserPattern userpatter0_
其中
userpatter0_.user_id =?
和userpatter0_.pattern_id =?

在浏览器中,我看到以下消息:

  HTTP Status 500 ....无法通过... model.User.id的反射getter获取字段值


解决方案

如果您将您的HQL查询从UserPattern更改为,那么user.id =:user_id和pattern .id =:pattern_id



我认为Hibernate会令对象和ID字段混淆。


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

解决方案

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.

这篇关于无法将java.lang.Integer字段设置为java.lang.Integer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆