加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java.sql.SQLException:ORA-00932:不一致的数据类型:预期NUMB

发布时间:2020-12-15 02:03:20 所属栏目:Java 来源:网络整理
导读:我在Dao类中有一个返回List Object []的方法.回来了,我正在使用命名查询 public ListObject[] getListByCustomer(Session session,int customerId,ListInteger strIds) { Query namedQuery = session.createSQLQuery(QueryConstants.EXPORT); namedQuery.set
我在Dao类中有一个返回List< Object []>的方法.回来了,我正在使用命名查询

public List<Object[]> getListByCustomer(Session session,int customerId,List<Integer> strIds) {
  Query namedQuery = session.createSQLQuery(QueryConstants.EXPORT);
  namedQuery.setParameter("customer",customerId);
  namedQuery.setParameter("stringId",strIds);
  List<Object[]> objects = namedQuery.list();
  return objects;
}

我想传递List< Integer>将stringId中的strId放入命名查询中,如下所示:

public class QueryConstants {
  public static final String EXPORT = 
    "SELECT sv.NAME,sv.TYPE,sv.CLIENT_ADDRESS,sv.NAME_REDUNDANT,sv.DEPARTURE_DATE,s1.CODE,sv.STATE,sv.CODE "
    + "FROM VIEW sv,PROCESS p1,SET s1 " 
    + "WHERE sv.R_ID = p1.R_ID and p1.ISSUER_ID = s1.USER_ID and sv.CUSTOMER_ID = :customer and sv.R_ID IN (:stringId)";
}

但我得到ORA-00932:数据类型不一致:预期NUMBER得到了BINARY.

此外,当我从查询中删除sv.R_ID IN(:stringId)时,它工作正常
当我传递Integer(strIds)而不是List< Integer>进入查询它工作正常.

我正在使用Oracle 10g.

解决方法

我想你只需要使用

IN :stringId

代替

IN (:stringId)

对于JPA

namedQuery.setParameter("stringId",strIds);

是正确的,但对于Hibernate你应该使用

namedQuery.setParameterList("stringId",strIds);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读