我有一个实体 driving_info
有很多字段,但其中一个是电话号码(从中订购)。我要做的是获取从该号码订购的所有驱动器。但是当我试图传递 phoneNumber
我明白了
query did not return a unique result: 5; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 5
org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 5; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 5
实际上,我想要的是结果列表,这样我就可以得到从该电话号码订购的所有驱动器列表的响应。
我的控制器方法是
@GetMapping("/users/{phone}")
public List<User> getUserByPhone(@PathVariable int phone) {
List<User> users= userService.findByPhone(phone);
if(users == null) {
throw new RuntimeException("User not found with "+phone+" phone number");
}
return users;
}
我的刀是
@Override
@Transactional
public List<User> findByPhone(int phone) {
Session currentSession = entityManager.unwrap(Session.class);
Query<User> theQuery = currentSession.createQuery("from User where phone=:phone",User.class);
List<User> users = theQuery.getResultList();
return users;
}
2条答案
按热度按时间vaqhlq811#
请尝试以下方式更正您的查询:
请注意,正如文件中所述:
即使hql不需要
select_clause
,这通常是一个很好的做法。对于简单的查询,目的是明确的,因此select_clause
很容易推断。但对于更复杂的查询,情况并非总是如此。通常最好明确指定意图。hibernate实际上并不强制
select_clause
但是,即使在解析jpql查询时,对jpa可移植性感兴趣的应用程序也应该注意这一点。oxiaedzo2#
你需要打电话
theQuery.list()
相反。