如何编写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;
}
}
答案 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
感谢。