【问题标题】:hibernate select distinct values order by one value休眠选择不同的值按一个值排序
【发布时间】:2014-01-20 13:17:34
【问题描述】:

我想从我的数据库中获取不同的值。
我在这个数据库中有 10 个字段,当我尝试使用这样的查询时:

SELECT DISTINCT (IMIE)FROM `przychodzace`

我得到 26 个结果,但休眠返回我只有 17 个...
这是列表功能:

    List<String> list = new ArrayList<String>();
    SessionFactory sf = HibernateUtil.getSessionFactory();
    Session session = sf.openSession();
    Criteria criteria = session.createCriteria(PrzychodzaceModel.class);
    if (i == 0) {
        criteria.setProjection(Projections.distinct(Projections.property("imie")));
        criteria.addOrder(Order.asc("imie"));
    }
    list = criteria.list();
    System.out.println(list.size() + "size");
    return list;

有谁知道如何正确地做到这一点,我正在尝试纠正它很长时间。 提前致谢。

【问题讨论】:

  • 您能否提供更多关于 IMIE 列中的内容的信息。返回的 sql 中的 26 个值和 hibernate 中的 17 个值是什么?此外,hibernate 可能会将您的查询与另一个限制您的结果的表连接起来。您可能会查看原始 SQL 输出并了解查询是什么。
  • i的值是多少?

标签: java mysql sql hibernate


【解决方案1】:

我认为您的问题的替代方法是使用带有 List 方法的 DAO 类,例如:

public List listMenu() {
    String hql = "FROM Menu";
    org.hibernate.Query query = session.getCurrentSession().createQuery(hql);
    query.setFirstResult(0);
    query.setMaxResults(5);
    List results = query.list();
    return results;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2015-08-29
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多