gpt4 book ai didi

java - JPA直接返回query.getSingleResult()时返回null

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:27 24 4
gpt4 key购买 nike

我对 hibernate 和 jpa 有一个非常奇怪的问题。下面是两段代码:

public Object getObject(Date date) {
try {

Query query = entityManager
.createQuery(
"select ob from Object ob where date= :date");
query.setParameter("date", date);

return (Object)query.getSingleResult();

} catch (EmptyResultDataAccessException e) {
logger.debug(String.format("No Result found - date[%s]",date));
return null;
}
}

...

public Object getObject(Date date) {
try {

Query query = entityManager
.createQuery(
"select ob from Object ob where date= :date");
query.setParameter("date", date);

Object ret = (Object)query.getSingleResult();
return ret;


} catch (EmptyResultDataAccessException e) {
logger.debug(String.format("No Result found - date[%s]",date));
return null;
}
}

即使给定日期匹配的有效记录,第一个每次都会生成一个 EmptyResultDataAccessException。第二个返回预期的结果。有没有人遇到过这个?是什么导致了这种行为?

请假设所有其他语法事物都存在(事务、初始化的实体管理器等),我唯一改变的是查询结果是直接在返回中检索还是首先分配给变量。

最佳答案

可能的,我以前也遇到过。我认为这与 Hibernate 正在执行的字节码操作有关。要找到它的根源,您必须进入非常深和黑暗的实现层面。

在使用 Hibernate/JPA 时,我总是使用第二种模式。不幸的是,它使代码变得有点冗长,但不值得深入研究生成的字节代码并试图理解它。

关于java - JPA直接返回query.getSingleResult()时返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166891/

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