javax.persistence.NoResultException: No entity found for query

简介:

先看这个查询:

1
2
3
4
     public  FcLatestSumDeliver findByAccount(String account) {
         String jpql =  " select a from FcLatestSumDeliver a where a.account = :account" ;
         return  entityManager.createQuery(jpql, FcLatestSumDeliver. class ).setParameter( "account" , account).getSingleResult();
     }


当一个jpql语句查询为了返回条记录的时候,会用到getSingleResult()方法,但是如果查询结果集大小为0,则会抛出异常。

javax.persistence.NoResultException: No entity found for query



因此,这个方法很鸡肋,通常我们期望在结果集为0的时候返回一个null,这个更符合常理。否则取第一条。


为了处理此问题,通常写法如下:

1
2
3
4
5
6
7
8
9
     public  FcLatestSumSupplier findByAccount(String account) {
         String jpql =  " select a from FcLatestSumSupplier a where a.account = :account" ;
         List<FcLatestSumSupplier> rs = entityManager.createQuery(jpql, FcLatestSumSupplier. class ).setParameter( "account" , account).getResultList();
         if  (rs.size() >  0 ) {
             return  rs.get( 0 );
         else  {
             return  null ;
         }
     }


先判断结果集大小,根据结果集大小再确定是返回null还是取第一条,这样显然更合理,不知道getSingleResult()方法的实现怎么会这样。



本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/1554587,如需转载请自行联系原作者

相关文章
|
6月前
|
Java 数据库连接
错误org.hibernate.AnnotationException: No identifier specified for entity
请根据你的实际情况,将实体类中的字段和注解进行适当的调整,以确保每个实体类都有一个明确定义的标识符(主键)。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
68 0
|
6月前
|
Java
org.springframework.web.util.NestedServletException: Request processing failed; nested exception....
org.springframework.web.util.NestedServletException: Request processing failed; nested exception....
148 0
|
数据库
types. Found: ‘com.baomidou.mybatisplus.annotation.IdType‘, required: ‘java.lang.String‘
被自己蠢哭了,今天设置表的主键为自动递增,就写IdType,死活报 types. Found: 'com.baomidou.mybatisplus.annotation.IdType', required: 'java.lang.String' 这个错误。
129 0
|
Web App开发 Java 数据库连接
javax.validation.ValidationException: Unable to create a Configuration
错误信息: [org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean]-Failed to set up a Bean Validation provider javax.
3612 0
|
关系型数据库 MySQL Java
org.hibernate.exception.JDBCConnectionException: could not execute query
最近的一个项目在Hibernate使用C3P0的连接池,数据库为Mysql。开发测试没有问题,在运行中每个一段长的空闲时间就出现异常:
543 0
|
Java 数据库连接
hibernate提示Unknown entity: :xxx
错误提示: org.hibernate.MappingException: Unknown entity: org.dao.po.Role at org.hibernate.internal.SessionFactoryImpl.
2209 0
|
关系型数据库 Java 数据库连接
spring 整合hibernate注解时候,出现“Unknown entity: com.ssh.entry.Admin; nested exception is org.hibernate.MappingException: Unknown entity: com.ssh.entry.Admin
今天学习使用ssh框架的时候,出现一个异常,弄了好久才找到,在这记录一下,我的sb错误1.spring整合hibernate,取代*.hbm.xml配置文件   在applicationContext.
2364 0
|
Java 数据库连接
【hibernate】错误:org.hibernate.HibernateException: identifier of an instance of com.agen.entity.Monthdetail was altered from xx to xx
所报错误: org.hibernate.HibernateException: identifier of an instance of com.agen.entity.Monthdetail was altered from 40288f8e5ac675fe015ac67725c40001 to ...
1824 0