gpt4 book ai didi

java - 使用 Hibernate 3 查询多对一属性

转载 作者:行者123 更新时间:2023-12-01 22:23:11 25 4
gpt4 key购买 nike

Java/Hibernate-3。我有一个名为“Ticket”的对象,它与“Person”具有多对一的关联。这被映射为:

<class name="Ticket"> 
...
<many-to-one name="person" class="Person" ...>
...
</class>

我想查询 Tickets,并通过 Person 上的属性限制我的结果。我想列出所有具有 assigned_to = 'ADMIN' 或 person.role = 'ADMIN' 的工单。我期待能够做这样的事情:

        query.add(
Expression.or(
Expression.eq("assigned_to", "ADMIN"),
Expression.eq("person.role", "ADMIN")
)
);

但我收到错误:无法解析属性:person.role of:model.Ticket

如何查询 Ticket,根据 Ticket.Person.role 限制结果?

最佳答案

您需要先为第二个表创建一个别名:

List tickets = sess.createCriteria(Ticket.class)
.createAlias("person", "p")
.add( Restrictions.eqProperty("p.role", "ADMIN") )
.list();

通过设置别名可以引用第二个表。如果您没有显式设置别名,Hibernate 将创建自己的别名。并且您 eq("person.role", "ADMIN") 没有正确使用该别名,因此您的查询无效。通过自己显式设置别名,您就知道该别名并可以正确引用它。

关于java - 使用 Hibernate 3 查询多对一属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289462/

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