gpt4 book ai didi

java - 作为 IN 运算符参数的对象列表

转载 作者:行者123 更新时间:2023-11-30 03:47:26 25 4
gpt4 key购买 nike

我正在将 jpa 提供程序从 Eclipselink 2.4.2 迁移到 Hibernate 4.3.5。

我想传递一个对象列表作为 IN 运算符的参数。目前,我正在尝试使用 List<UUID>但它也失败并显示 List<Class<?>> .

我的查询如下:

SELECT e
FROM Entity e
WHERE e.uuid IN :uuids;

代码:

List<UUID> uuids = new ArrayList<UUID>();
uuids.add(UUID.fromString("..."));

Query query = session.createQuery(queryString);
query.setParameter("uuids", uuids);

List list = query.list(); // <-- fails here

List<UUID> 的异常(exception)情况:

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.UUID

并与 UUID[] :

java.lang.ClassCastException: [Ljava.util.UUID; cannot be cast to java.util.UUID

Hibernate 似乎不能正确理解这种列表。调试时,我可以看到 QueryLoader使用正确的描述符,但不将其翻译为列表。

实际上,这是与 Eclipselink 一起使用的。我做错了什么?

最佳答案

我猜您正在使用 query.setParameter(..) (而不是代码示例中所述的 session.setParaemter(..)

对于命名查询的多个值,您应该使用 setParameterList 而不是 setParameter:

List<UUID> uuids = new ArrayList<UUID>();
uuids.add(UUID.fromString("..."));

Query query = session.createQuery(queryString);
// **This method setParameterList bind multiple values to a named query parameter.**
query.setParameterList("uuids", uuids);

List list = query.list();

关于java - 作为 IN 运算符参数的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com