Bas*_*ash 2 hibernate jpa jpql jpa-2.0
我是JPA的新手并且能够快速获得它,我一直在查询中使用"IN"运算符尝试选择查询,并且已经将错误视为关闭.我所做的是,我从函数中获取一系列(长)消息ID,并使用它来根据这些ID选择记录.这是我的查询
select t from MessageTable t where t.messageId IN (:id)
query.setParameter("id", id);
Run Code Online (Sandbox Code Playgroud)
我刚刚向您展示了部分代码,实体messageId很长,在Oracle DB中它的编号.当我尝试尽可能长的变量时它工作,当我传递长数组时它似乎不起作用.如果有人遇到这样的问题,可以帮助一些人.这是错误
14:24:49,428 INFO [LongType]无法将值'[J @ 14f76da']绑定到参数:1; [J不能转换为java.lang.Long
当您想要检查long/Long时,数组Long[]并且long[]不是IN的有效参数类型 - 仅以下是:
Long long 和Collection<Long> (collection_valued_input_parameter)如果你想坚持使用JPA而不是使用Kshitij建议的org.Hibernate.Query.setParameterList,你必须将你的参数转换为Collections<Long>.
转换很容易,可以通过自己滚动或者例如在ArrayUtil的帮助下完成:
long[] id = {1L, 2L};
Long[] longs = ArrayUtils.toObject(id);
Collection<Long> list = Arrays.asList(longs);
Run Code Online (Sandbox Code Playgroud)