java - Hibernate sql错误:java. lang.String无法转换为java.lang.Integer

标签 java hibernate

我更改了 Hibernate sql,遇到了问题。 我认为这是因为 ids 是字符串。
我该如何解决这个问题?

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at org.hibernate.type.IntegerType.set(IntegerType.java:64)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:156)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:138)
    at org.hibernate.param.PositionalParameterSpecification.bind(PositionalParameterSpecification.java:68)
    at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:567)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1612)
    at org.hibernate.loader.Loader.doQuery(Loader.java:717)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
    at org.hibernate.loader.Loader.doList(Loader.java:2294)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2172)
    at org.hibernate.loader.Loader.list(Loader.java:2167)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:448)...

这是我的代码:

public List getUser(int leader, List<Member> members) {
    String ids = String.valueOf(leader);
    if (GeneralUtil.hasValue(members)) {
        for (Member member : members) {
            ids += "," + member.getUserId(); //1,2,3,4  
        }
    }
    try {
        // Old method works well:
        // StringBuffer qryStr = new StringBuffer(
        //      "from User u where u.userId in (" + ids + ")"); 
        // return this.getHibernateTemplate().find(qryStr.toString());  

        StringBuffer qryStr = new StringBuffer("from User u where u.userId in (?)");    
        return this.getHibernateTemplate().find(qryStr.toString(), new Object[] { ids });   
    } catch (DataAccessException e) {
        e.printStackTrace();
    }
    return null;
}

最佳答案

整数数组怎么样?

Integer[] ids = new Integer[members.size()+1];
ids[0] = leader;
for (int i = 0; i < members.size(); i++) {
   ids[i+1] = member.getUserId();
}

关于java - Hibernate sql错误:java. lang.String无法转换为java.lang.Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31097785/

相关文章:

java - Java 编译器是否包含字符串常量折叠?

linux 和文本编辑器中的 java.lang.ClassNotFoundException : com. mysql.jdbc.Driver 异常

Java计时器在您单击空格时启动,在再次单击空格后结束

java - 在方法覆盖中返回继承的类而不是父类(super class)

java - JPA OneToMany 双向

Hibernate:双向一对多,以一为父级

java - 查询语法异常 : Path expected for join

Java spring mvc : IllegalStateException: Cannot convert value of type [java. lang.String] 为所需类型

java - 我可以使用通用方法来访问 hibernate 中不同实体的数据吗

java - 这个线程连接代码是什么意思?