请考虑以下设置。
Space.java
class Space {
Id id;
ParkingCampus campus;
}
class ParkingCampus {
Id id;
String country;
}
这不是我项目的确切结构,但它足够接近我想要了解的内容。
我如何能够在我的'Space'对象上运行查询,该对象仅返回子类'ParkingCampus'将字符串'country'设置为特定值的实例,例如:“UK”。
我在想这样的事情:
sessionFactory.getCurrentSession()
.createCriteria(String.class)
.add(Restrictions.eq("country", "UK"))
.list();
但我不确定这是否可以正确编译。那么,默认情况下,Hibernate会在尝试将结果映射到我的限制条件时执行“深度”搜索,还是需要执行其他操作以指定查询以这种方式工作?
非常感谢任何帮助!
答案 0 :(得分:1)
使用Space作为基本标准,为停车场创建别名,并在别名上添加限制。儿童国家到英国。
但是,请记住,您的实施似乎有点偏离,IMO。应该有一个表格,其中包含parkingCampusId和spaceId的复合键,而不是拥有id的空间。
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Space.class, "space");
criteria.createAlias("space.parkingCampus", "campus");
criteria.add(Restrictions.eq("campus.country", "UK");