gpt4 book ai didi

java - 使用 IN 关键字在子 SET 中进行 HQL 搜索

转载 作者:行者123 更新时间:2023-11-30 05:57:19 24 4
gpt4 key购买 nike

当应用于某些对象集合中的搜索时,我确实找不到足够的有关 hibernate IN 关键字的文档。我有一个奇怪的问题,我有一个 hql 查询:

    FROM Contact co, IN (co.categories)categories WHERE categories.name = ?

当然,我期待的是联系人列表。但它有问题,因为它没有返回 Contact 对象列表,而是返回 Object[] 列表??????是语法还是完全错误?

以下是映射部分:

     <set lazy="false" name="categories" table="ContactCategory">
<key column="id" foreign-key="fk_contact_category" />
<many-to-many class="Category" column="catid"
foreign-key="fk_contact_category2" />
</set>

<class name="Category">

<id column="catid" name="Id" type="long">
<generator class="sequence" />
</id>
<property length="50" name="name" type="string" />
</class>

需要提及的重要事项:此查询是使用查询构建器进行的。这是生成的查询之一失败的打印输出。非常奇怪的是 - 我在这个列表中得到了正确的对象数量,我检查了数据库,并且给定参数的数量是正确的,但我没有得到联系人对象,而是列表中的一些对象数组。

感谢所有的帮助

最佳答案

您需要添加SELECT co

这样您的查询是SELECT co FROM Contact co, IN (co.categories)categories WHEREcategories.name = ?

SELECT co 是必需的,它可以告诉 Hibernate 每个结果集行应该返回哪一项。


从联系人 co 中选择 co LEFT JOIN co.categories cat WHERE cat.name = ?到目前为止,我只在Where - 子句中看到过IN 关键字。在这样的事情中,

FROM 类别 cat WHERE cat.name IN ('HALLO', 'WORLD')

关于java - 使用 IN 关键字在子 SET 中进行 HQL 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874180/

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