【发布时间】:2011-04-20 20:03:12
【问题描述】:
我有一个如下所示的数据模型(简化示例):
public class Address { private List<AddressLine> addressLines; }
public class AddressLine { private String value; private String type; }
我正在尝试使用 Criteria API 在数据库中搜索包含特定地址行组合的地址。例如,要检索包含地址行 {(type="CITY", value="London"), (type="COUNTRY", value="GB")} 的所有地址。我找不到任何此类查询的示例。
据我所知,是根据单个 AddressLine 查询地址。
session.createCriteria(Address.class)
.createCriteria("addressLines")
.add(Restrictions.and(Restrictions.eq("type", type), Restrictions.eq("value", value))).list()
如果我为第二个地址行添加限制,休眠生成的 SQL 基本上是询问 SELECT x WHERE x.y = 'a' AND x.y = 'b' 所以永远不会返回任何结果。
我发现以前有人问过类似的问题,但没有一个问题被接受或投票给答案。
【问题讨论】:
标签: java sql hibernate criteria