我应该在 getSingleResult 中使用哪个异常
which exception should I use in getSingleResult
我在我的项目中使用 JPA
我的方法 returns id of a table 如下所示
public Object getID(Long id)
{
String queryString="select id from test where testid= "+id;
Query query = entityManagerUtil.entityManager.createNativeQuery(queryString);
return query.getSingleResult();
}
所以如果没有记录那么它会抛出一个错误,然后我会在 catch 块中写插入查询。
因为我只想在没有记录时插入,所以我很困惑应该捕获哪个异常。
oracle documnent 说 NoResultException
如果没有记录,但在我的控制台中我得到 EmptyResultDataAccessException
org.springframework.dao.EmptyResultDataAccessException: No entity found for query
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:294)
at org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect.ajc$afterThrowing$org_springframework_orm_jpa_aspectj_JpaExceptionTranslatorAspecta1ac9(JpaExceptionTranslatorAspect.aj:15)
所以大佬们请告诉我如果没有记录我应该捕获哪个异常
创建exists方法并调用query
的list方法:
public boolean exists(Long id)
{
String queryString="select id from test where testid= "+id;
Query query = entityManagerUtil.entityManager.createNativeQuery(queryString);
if (query.list().size()>0){
return true
}
return false
}
因此您不必捕获异常。
更新:
您还可以将 getId() 函数与 list
操作一起使用:
public Object getID(Long id)
{
String queryString="select id from test where testid= "+id;
Query query = entityManagerUtil.entityManager.createNativeQuery(queryString);
List l = query.list().size();
if (l>0){
return l.get(0)
}
return null;
}
我在我的项目中使用 JPA
我的方法 returns id of a table 如下所示
public Object getID(Long id)
{
String queryString="select id from test where testid= "+id;
Query query = entityManagerUtil.entityManager.createNativeQuery(queryString);
return query.getSingleResult();
}
所以如果没有记录那么它会抛出一个错误,然后我会在 catch 块中写插入查询。
因为我只想在没有记录时插入,所以我很困惑应该捕获哪个异常。
oracle documnent 说 NoResultException
如果没有记录,但在我的控制台中我得到 EmptyResultDataAccessException
org.springframework.dao.EmptyResultDataAccessException: No entity found for query
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:294)
at org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect.ajc$afterThrowing$org_springframework_orm_jpa_aspectj_JpaExceptionTranslatorAspecta1ac9(JpaExceptionTranslatorAspect.aj:15)
所以大佬们请告诉我如果没有记录我应该捕获哪个异常
创建exists方法并调用query
的list方法:
public boolean exists(Long id)
{
String queryString="select id from test where testid= "+id;
Query query = entityManagerUtil.entityManager.createNativeQuery(queryString);
if (query.list().size()>0){
return true
}
return false
}
因此您不必捕获异常。
更新:
您还可以将 getId() 函数与 list
操作一起使用:
public Object getID(Long id)
{
String queryString="select id from test where testid= "+id;
Query query = entityManagerUtil.entityManager.createNativeQuery(queryString);
List l = query.list().size();
if (l>0){
return l.get(0)
}
return null;
}