gpt4 book ai didi

java - 如何强制 Hibernate 只返回一个实体而不是一堆?

转载 作者:行者123 更新时间:2023-11-30 07:09:58 24 4
gpt4 key购买 nike

这是我的问题。我正在使用 Hibernate 在数据库中搜索用户实体。但是我的搜索条件不仅允许一个结果(用户)。如何强制 Hibernate 只返回单个用户对象而不是一堆?

我的代码:

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 子句。

关于java - 如何强制 Hibernate 只返回一个实体而不是一堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com