【问题标题】:This codes can't check NoResultException此代码无法检查 NoResultException
【发布时间】:2014-01-17 02:55:34
【问题描述】:

这是我制作的代码。它不应该得到并进入 NoResultException,但它并不像预期的那样。有未使用的数据。我尝试打印出来,这是输出:“[]”

private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
    try {            
        int row = tableDataRangka.getSelectedRow();
        String idRangka = tableDataRangka.getValueAt(row, 0).toString();
        System.out.println( relasiRumahkayuRangkaDAO.getRelasiByIdRangka(idRangka).toString() );
    } catch (NoResultException nre) {
        // Doing something..        
    } catch (Exception ex) {
        Logger.getLogger(MasterDataProjectUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}

这里是“getRelasiByIdRangka”方法的代码:

public List<RelasiRumahKayuRangka> getRelasiByIdRangka(String idRangka) throws Exception{
    initEntityManager();
    List<RelasiRumahKayuRangka> rrDrs = new ArrayList<>();
    Query q = em.createNamedQuery("RelasiRumahKayuRangka.findByIdRangka");
    q.setParameter("idRangka", idRangka);
    rrDrs.addAll(q.getResultList());
    closeEntityManager();
    return rrDrs;
}

而这个是 JPA 查询,findByIdRangka:

@NamedQuery(name = "RelasiRumahKayuRangka.findByIdRangka", query = "SELECT r FROM RelasiRumahKayuRangka r WHERE r.relasiRumahKayuRangkaPK.idRangka = :idRangka"),

你们知道解决办法,所以代码可以被 NoResultException 捕获吗?

【问题讨论】:

  • 代码“relasiRumahkayuRangkaDAO.getRelasiByIdRangka(idRangka)”应该被 noResultException 捕获。我已经用数据库中不包含的数据填充了 idRangka。
  • 尝试从某个地方抛出noResultException,而不仅仅是Exception。就目前而言,该异常不会被任何东西抛出。
  • 好的,我会试试的,除了它通常有效..

标签: java mysql jpa netbeans


【解决方案1】:

在您的代码中。如果结果集为空,则列表也将为空。 利用这种情况并抛出所需的异常。

在您的 getRelasiByIdRangka(String idRangka) 中添加以下更改。

public List<RelasiRumahKayuRangka>
   getRelasiByIdRangka( String idRangka ) throws Exception {
    initEntityManager();
    // rest of the code here
    // ...

    // check if some results are found or not
    if( rrDrs.isEmpty() ) { // or ( rrDrs.size() == 0 )
       throw new NoResultException( "No results found" );
    } // if empty

    // this should be a filled in list
    return rrDrs;
} // end of method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多