ben*_*rre 3 hibernate jpa hibernate-criteria
在我们的系统中,我们的数据库如下所示
一个代理商有很多经纪人,一个经纪人有很多用户,一个用户有很多订单.
我正在尝试使用hibernate标准来查找指定经纪商下的所有用户订单.在简单的SQL中,这将非常容易.我可以在条件api中执行此操作吗?我发现在使用点击和过滤器类型时,条件api工作得特别好,因为您可以构建一个非有序的限制列表并将它们添加到条件中.
目前我有这个不起作用
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();
Run Code Online (Sandbox Code Playgroud)
我收到消息"由以下原因引起:org.hibernate.QueryException:无法解析属性:user.brokerage:com.printlogix.rp.server.domain.UserOrder:".
你能将param名称传递给Restrictions.eq,如"object.parentobject.property"吗?
您不能像在HQL中那样链接关联.相反,您需要定义子标准或别名:
Criteria c = session.createCriteria(UserOrder.class);
Criteria userCriteria = c.createCriteria("user");
userCriteria.add(Restrictions.eq("brokerage", brokerage));
Run Code Online (Sandbox Code Playgroud)
要么
Criteria c = session.createCriteria(UserOrder.class);
c.createAlias("user", "user");
c.add(Restrictions.eq("user.brokerage", brokerage));
Run Code Online (Sandbox Code Playgroud)
这在Criteria的javadoc和Hibernate参考文档中有记录.
| 归档时间: |
|
| 查看次数: |
3831 次 |
| 最近记录: |