javax.persistence.NoResultException: No entity found for query

先看这个查询:

    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,则会抛出异常。

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

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

    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()方法的实现怎么会这样。

时间: 2024-10-27 16:53:33

javax.persistence.NoResultException: No entity found for query的相关文章

Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query

org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query at org.springframework.orm.jpa.EntityManagerFactoryUtil

javax.persistence.TransactionRequiredException: Executing an update/delete query

最近在springboot中整合jpa的时候碰到一个异常,异常如下 javax.persistence.TransactionRequiredException: Executing an update/delete query at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1496) 该异常一般出现在执行更新删除操作时出现,jpa要求执行这些操作时需要

Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity

1.错误描写叙述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-12 19:41:17 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 usi

Hibernate3使用注解出现 javax/persistence/Entity找不到的错误

最近使用Spring3,Struts2和Hibernate3开发中,对于实体类不使用Hbmxml映射文件而使用注解. 使用Test类java运行方式可以成功,但是web环境下,启动Tomcat时报错 出现 javax/persistence/Entity找不到的错误.原因是因为缺少persistence.jar包. 在Hibernate4中有一个hibernate-jpa-2.0-api-1.0.1.Final.jar的包,加入项目中即可.

[Spring Data JPA问题]Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException

JPQL如下: @Modifying(clearAutomatically = true) @Query("UPDATE SyncTestFromTKDO SET stuAns = '' where typeId = ?1") public void updateStuAns(Integer typeid); 项目运行时报错,提示: Executing an update/delete query; nested exception is javax.persistence.Trans

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist:

再用jpa+spring+struts2开发的是时候遇到一个问题(采用了注解的方式,xml配置的道理是一样的),当我在注册用户的时候,注册第一个用户没有问题,但注册第二个用户开始就会抛出一个异常: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.dalton.domain.User 原因是第二次插入用户的时

@Index用法——javax.persistence.Index

package com.springup.utiku.model; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Index; import java

使用javax.persistence注解配置PO对象

JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org

【转】java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

最近在配置最新的ssh(struts2.3.16.3+hibernate4.3.7+spring4.1.2)的时候遇到的这个错误提示,后来在网上找了半天都不能解决,虽然有个说法是model对象用这样@Entity(name = "UserInfo")的方式来实现,但是这样的话对象和表明必须一致,后来找到如下原因:希望对大家有所帮助,特分享如下: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/p