开发者

DAO method retrieve single entry

How can I write DAO method which will return as a result only first entry from the database. For instance lets say I'm looking at Users table and I want to retrieve only the first entry, I'd decla开发者_JAVA技巧re method like:

public User getFirstUser(){
    //method logic
}

EDIT:

User has primary key id if that matters at all.

I apologize if this question is too simple/stupid/whatever I'm beginner with Java so I'm trying new things. thank you

My attempt :

   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; 
            } 
    }


You can

  • use:

    Query query = session.createQuery("from User");
    query.setMaxResults(1);
    User result = (User) query.uniqueResult();
    
  • use User user = session.get(User.class, id); if you know the ID upfront.


Get all users ordered by id and limit the results to 1 (but don't use LIMIT, use setMaxResults() to remain portable):

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


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

:)


Don't remember exactly but i think there is a method getSingleResult in JPA and also in Hibernate so...

But this method perhaps throw exception when multiple results are returned... can't remember...

Actually there is also getResultList returning a List of entities, and you could do list.get(0) no?

Or create a query with LIMIT 1?


In MS SQL Server we do it like,

First user, min ID,

SELECT TOP 1 * FROM Users ORDER BY Id

Latest user, max ID,

SELECT TOP 1 * FROM Users ORDER BY Id DESC

thanks.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜