gpt4 book ai didi

使用相关实体的主键过滤结果的 Hibernate 条件查询

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

在我们的系统中我们的数据库是这样的

One agency has many brokerages, one brokerage has many users, one user has many orders.

我正在尝试使用 hibernate 条件来查找指定经纪商下用户的所有订单。在普通 SQL 中,这将非常容易。我可以在标准 api 中执行此操作吗?我发现标准 api 在点击和过滤类型 uis 时效果特别好,因为您可以构建一个无序的限制列表并将它们添加到标准中。

目前我有这个不起作用

final Session session = (Session) entityManager.getDelegate();
final Brokerage brokerage = userAdmin.loadBrokerage(brokerageId);
@SuppressWarnings({"UnnecessaryLocalVariable", "unchecked"})
final List<UserOrder> userOrders = session
.createCriteria(UserOrder.class)
.add(Restrictions.eq("user.brokerage", brokerage))
.list();

我收到消息“Caused by: org.hibernate.QueryException: could not resolve property: user.brokerage of: com.printlogix.rp.server.domain.UserOrder:”。

你能像“object.parentobject.property”一样将参数名称传递到 Restrictions.eq 吗?

最佳答案

您不能像在 HQL 中那样链接关联。相反,您需要定义一个子标准或别名:

Criteria c = session.createCriteria(UserOrder.class);
Criteria userCriteria = c.createCriteria("user");
userCriteria.add(Restrictions.eq("brokerage", brokerage));

Criteria c = session.createCriteria(UserOrder.class);
c.createAlias("user", "user");
c.add(Restrictions.eq("user.brokerage", brokerage));

这记录在 Criteria's javadoc 中在Hibernate reference documentation .

关于使用相关实体的主键过滤结果的 Hibernate 条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988529/

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