【问题标题】:Criteria Query on Sakila DatabaseSakila 数据库上的条件查询
【发布时间】:2014-11-21 01:56:59
【问题描述】:

我是 Hibernate 和 Criteria Query 的新手。我想对 sakila 数据库执行操作。我想要以下SQL 查询的条件查询:

select c.city, cr.country 
from city c 
left join country cr 
on c.country_id = cr.country_id;

【问题讨论】:

标签: mysql hibernate hibernate-criteria


【解决方案1】:

假设您在CountryCity 之间有OneToMany uni-directional mapping,如下所示:

@Entity
public class Country {

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name = "country_id")
    private Set<City> cities = new HashSet<City>();
}

然后您可以像这样创建Criteria 查询:

    Criteria criteria = getSession().createCriteria(Country.class);
    criteria.createAlias("cities","c",JoinType.LEFT_OUTER_JOIN);

    // This line removes the duplicate results of root entity - `Country`
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    List<Country> countries = criteria.list();

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2015-12-31
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多