【问题标题】:Suppress error message No entity found for query抑制错误消息 No entity found for query
【发布时间】:2018-11-24 12:29:22
【问题描述】:

我使用此代码获取单行结果:

@Override
    public PaymentTransactions transactionByUnique_Id(String unique_id) throws Exception {

        String hql = "select e from " + PaymentTransactions.class.getName() + " e where e.unique_id = :unique_id";
        Query query = entityManager.createQuery(hql).setParameter("unique_id", unique_id);
        PaymentTransactions paymentTransaction = (PaymentTransactions) query.getSingleResult();
        return paymentTransaction;
    }

但是当我没有匹配的行时,我得到了异常:

14:25:41,736 INFO  [stdout] (default task-1) javax.persistence.NoResultException: No entity found for query

如何抑制该异常并继续执行代码?

【问题讨论】:

  • 调用 getResultList(),如果存在则返回它的第一个元素。另外,请尊重 Java 命名约定,并使用 TypedQuery。
  • 我应该如何更改代码以使用 TypedQuery?
  • Basic java 正在捕获异常并基于此从您的方法返回不同的结果。与 JPA API 无关

标签: java jpa spring-data


【解决方案1】:

只需抛出并捕获 javax.persistence.NoResultException 异常并继续执行代码。

How to continue program execution even after throwing exception? 可能重复

【讨论】:

    【解决方案2】:

    只需更新记录方式:

        log4j.logger.javax.persistence=WARN
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多