Geo*_*pty 4 java hibernate hibernate-criteria
我想使用Hibernate的Criteria API来准确地说出每个人所说的最可能的用例,应用复杂的搜索条件.问题是,我想要查询的表不是完全由原始值组成,而是部分来自其他对象,我需要查询这些对象的id.
我从2年前发现这篇文章表明这是不可能的.以下是我尝试无效的方法,还有Hibernate的其他方面,我知道字符串文字中支持这种点符号的位置,以指示对象嵌套.
if (!lookupBean.getCompanyInput().equals("")) {
criteria.add(Restrictions.like("company.company", lookupBean.getCompanyInput() + "%"));
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这是我正确考虑的代码,用于完成我上面尝试的内容,使用下面第一个答案的建议; 请注意,我甚至使用额外的createCriteria调用来对另一个关联的对象/表中的属性进行排序:
if (!lookupBean.getCompanyValue().equals("")) {
criteria.createCriteria("company").add(
Restrictions.like("company", lookupBean.getCompanyValue() + "%"));
}
List<TrailerDetail> tdList =
criteria.createCriteria("location").addOrder(Order.asc("location")).list();
Run Code Online (Sandbox Code Playgroud)
不完全确定我遵循你的例子,但是当然可以在关联实体上指定过滤条件,只需嵌套Criteria对象以形成树.例如,如果我有一个名为Order的实体与User实体具有多对一关系,我可以使用如下查询找到名为Fred的用户的所有订单:
List<Order> orders = session.createCriteria(Order.class)
.createCriteria("user")
.add(eq("name", "fred"))
.list();
Run Code Online (Sandbox Code Playgroud)
如果你在谈论一个与自身有关系的实体,那也应该有效.如果需要过滤关联对象的ID,也可以将"name"替换为"id".
| 归档时间: |
|
| 查看次数: |
5666 次 |
| 最近记录: |