DAO方法检索单个条目

时间:2010-05-20 11:12:10

标签: java database hibernate dao

如何编写DAO方法,该方法仅返回数据库中的第一个条目。例如,假设我正在查看Users表,我只想检索第一个条目,我将声明方法如下:

public User getFirstUser(){
    //method logic
}

修改

如果重要,用户必须拥有主键 ID

如果这个问题过于简单/愚蠢/无论我是Java初学者,我都会道歉,所以我正在尝试新事物。谢谢

我的尝试:

   public User getFirstUser(){
            try { 
                final String getQuery = "SELECT * FROM Users WHERE Id = (SELECT MIN(Id) FROM Users)"; 
                final Query query = getSession().createQuery(getQuery); 
                final int rowCount = query.executeUpdate(); // check that the rowCount is 1 
                log.debug("get successful"); 
//             return what??
            } catch (RuntimeException re) { 
                log.error("get not successful", re); 
                throw re; 
            } 
    }

5 个答案:

答案 0 :(得分:2)

你可以

  • 使用:

    Query query = session.createQuery("from User");
    query.setMaxResults(1);
    User result = (User) query.uniqueResult();
    
  • 如果您事先知道ID,请使用User user = session.get(User.class, id);

答案 1 :(得分:2)

获取按ID排序的所有用户,并将结果限制为1(但不要使用LIMIT,请使用setMaxResults()保持便携性):

Query q = session.createQuery("from User u order by u.id");
q.setMaxResults(1);
User u = (User) q.uniqueResult();

答案 2 :(得分:0)

SELECT * FROM Users WHERE Id = (SELECT MIN(Id) FROM Users)

:)

答案 3 :(得分:0)

不记得确切,但我认为在JPA中还有一个方法getSingleResult,而且在Hibernate中... ...

但是这个方法可能会在返回多个结果时抛出异常......不记得......

实际上还有getResultList返回一个实体列表,你可以做list.get(0)no?

或使用LIMIT 1创建查询?

答案 4 :(得分:0)

在MS SQL Server中,我们这样做,

第一位用户,分钟ID,

SELECT TOP 1 * FROM Users ORDER BY Id

最新用户,最大ID,

SELECT TOP 1 * FROM Users ORDER BY Id DESC

感谢。