簡體   English   中英

如何強制Hibernate只返回一個實體而不是束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM