0

我必须检索数据库条目。我知道我写的查询只返回一行。因此,我正在使用 getSingleResult。但是,当查询返回 null 时,我无法捕捉到它。我该如何解决这个问题?这是我的一段代码

       try {
            result = em.createQuery("SELECT d FROM fields d WHERE d.fieldID = :fieldID", Field.class)
                       .setParameter("fieldID", fieldID)
                       .getSingleResult();

//manual null check only seems to work. But it seems tedious to check every DB column for null value :(

       if((result.getValsText() == null)){
                result = new Field();
                result.setValText("empty");

            }
        } catch (NoResultException e) {
            result = new Field();
            result.setValText("empty");

        }

请指教。

谢谢

4

1 回答 1

0

对于非 Id 属性,您可以

  • COUNT在常规查询之前发送查询或更好
  • 打电话getResultList()给你Query

getResultList如果没有找到结果,将返回一个空列表。要获得您的单一结果,请检查列表是否为空并调用get(0)它。

如果属性是@Id属性,调用entityManager.find(MyEntity.class, id);-如果没有找到结果,则find返回,如果找到,则返回实体的单个实例。null

编辑-出于性能和可读性的原因,最后一个选项更可取。使用不能使用最后一个选项的第二个选项(列表)。

于 2013-04-10T08:30:15.073 回答