【问题标题】:Select distinct with Spring Hibernate Sessionfactory使用 Spring Hibernate Sessionfactory 选择不同的
【发布时间】:2011-11-18 01:19:45
【问题描述】:

这将是我的查询:

SELECT DISTINCT name FROM city;

这是我目前的代码:

public List<City> listCities() {
    return sessionFactory.getCurrentSession().createQuery("from City").list();
}

意思是:

SELECT * FROM city;

我必须如何更改代码才能使查询正确?

我希望我提供了足够的信息,请随时提出问题。

【问题讨论】:

标签: java sql hibernate spring sessionfactory


【解决方案1】:

只需编写以下 HQL:
sessionFactory.getCurrentSession().createQuery("select distinct from City").list()
甚至更好(使用结果转换器):

查询 q = sessionFactory.getCurrentSession().createQuery("from City"); q.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

【讨论】:

  • 似乎很合理,但我是否还必须将我想查询的字段的名称包含为 DISTINCT ?像这样SELECT DISTINCT column_name(s) FROM table_name
  • 第二个解决方案的返回类型是什么?
  • SELECT DISTINCT 不遵循 SQL 准则,而是遵循 HQL 准则 - 意思是,区分由 id 完成。第二种解决方案的返回类型是您的 City 实体。在大多数情况下,我发现第二个更好。
猜你喜欢
  • 2011-12-28
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2012-06-10
  • 2015-12-31
  • 2013-01-26
  • 2014-09-23
相关资源
最近更新 更多