Cos*_*min 3 collections jboss hibernate jpa-2.0
class X {
Y y; // manyToOne
}
class Y {
Long id;
}
Run Code Online (Sandbox Code Playgroud)
@NamedQuery(name = "someName", query = "from X where y.id in :ids")
Run Code Online (Sandbox Code Playgroud)
我在实体上有公共的,表格的,实体的以及所有其他内容,但是我没有在这里写下。
TypedQuery<X> query = getEntityManager().createNamedQuery("someName", X.class);
query.setParameter("ids", someListOfLongs); // HERE I GET THE ERROR
queryFinal.getResultList();
Run Code Online (Sandbox Code Playgroud)
Parameter value [[Ljava.lang.Object;@90d0bf] was not matching type [java.lang.Long]
我尝试使用或不使用(),将Hibernate-Core的版本更改为3.6.4(从JBoss 6.0.0.Final开始),否则,如果我编写in :ids不使用()的程序,则会出现错误。
请帮忙。
The IN always worked, the problem was that List<Long> wasn't actually List<Long> was List<Object[]>. Thanks
我也使用了JBoss AS 6和这个确切的构造,但是它确实有效。
这是查询的示例:
<named-query name="Item.getByItemIDs">
<query>
SELECT
i
FROM
Item i
WHERE
i.ID in (:itemsIDs)
</query>
</named-query>
Run Code Online (Sandbox Code Playgroud)
和使用它的类:
@Override
public List<Item> getByItemIDs(List<Long> itemIDs) {
return entityManager.createNamedQuery("Item.getByItemIDs", Item.class)
.setParameter("itemIDs", itemIDs)
.getResultList();
}
Run Code Online (Sandbox Code Playgroud)
如您的例外所示[[Ljava.lang.Object;@90d0bf](这是一个Object []),也许您应该像我的示例中那样尝试List <Long>?
(ps,您可以使用JPA的Fluid API使您的代码更简洁一些)