简体   繁体   English

Hibernate从数据库获取项目的最新版本

[英]Hibernate get project last version from database

I'm new to hibernate framework and I don't know how to write code using hibernate functions to get needed object. 我是休眠框架的新手,我不知道如何使用休眠功能来编写代码以获取所需的对象。 In internet I have seen code using criteria and projection, but the query for projection is not what i need. 在互联网上,我已经看到使用准则和投影的代码,但是对投影的查询不是我所需要的。 For example i need to get last version of project by date. 例如,我需要按日期获取项目的最新版本。 This is criteria 这是标准

Criteria criteria = session
                    .createCriteria(Assembly.class)
                    .setProjection(Projections.max("date"));

-First problem is that it gets max value from all table(don't know how to set for searching only exact project name date). -第一个问题是它从所有表中获取最大值(不知道如何设置仅搜索确切的项目名称日期)。 -Second problem that it returns date but i need object of class. 第二个问题,它返回日期,但是我需要类的对象。 In summary i need from hibernate to generate such query: SELECT * FROM assembly WHERE projectName = ? AND .. 总之,我需要从休眠状态生成此类查询: SELECT * FROM assembly WHERE projectName = ? AND .. SELECT * FROM assembly WHERE projectName = ? AND .. .don't know how to finish it, date = max() - won't work as I understand. SELECT * FROM assembly WHERE projectName = ? AND ..不知道如何完成它, date = max() -按照我的理解将不起作用。 One of the bad solution is to get all exact projects and then compare there dates, but I think there's gonna be good solution. 不好的解决方案之一是获取所有确切的项目,然后比较那里的日期,但是我认为会有好的解决方案。

This should work 这应该工作

Assembly newest = 
    (Assembly) session.createCriteria(Assembly.class)
    .add(Restrictions.eq("projectName", projectName))
    .addOrder(Order.desc("date"))
    .setMaxResults(1)
    .uniqueResult();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM