Hibernate搜索查询,受子类限制?

时间:2016-07-08 16:39:25

标签: java database hibernate relation restrictions

请考虑以下设置。

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会在尝试将结果映射到我的限制条件时执行“深度”搜索,还是需要执行其他操作以指定查询以这种方式工作?

非常感谢任何帮助!

1 个答案:

答案 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");