![](/img/trans.png)
[英]Beginner hibernate: Why does my hibernate query return only one result, instead of a list?
[英]How to enforce Hibernate to return only one entity instead of bunch?
這是我的問題。 我正在使用Hibernate在DB中搜索用戶實體。 但是我的搜索條件不僅允許一個結果(用戶)。 如何強制休眠只返回單個用戶對象而不是束?
我的代碼:
public User findUser(String name) {
return (User) getSession().
createCriteria(User.class).
add(Restrictions.like("name", name, MatchMode.ANYWHERE)).
uniqueResult();
}
匹配多個結果時的Hibernate異常示例:
org.hibernate.NonUniqueResultException: query did not return a unique result: 5
您的查詢返回了多個用戶,而不僅僅是一個。 uniqueResult()
用於僅返回一個用戶的查詢,並且它引發異常以使您意識到該查詢實際上未返回唯一結果。 如果只希望查詢返回第一個用戶,請使用
Criteria c = getSession().
createCriteria(User.class).
add(Restrictions.like("name", name, MatchMode.ANYWHERE));
c.setMaxResults(1);
List<User> users = c.list();
return users.isEmpty() ? null : users.get(0);
請注意,您無法保證5個用戶中的哪個將實際返回。 為了更具確定性,您應該在查詢中添加一個order by id
子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.