javax.persistence. NoResultException: для запроса

Раньше Я разместил этот вопрос, я уже смотрел это , но не смог получить то, что искал.

Я знаю, что для написанного мной запроса может существовать только одна строка или вообще не быть. Поэтому у меня нет причин использовать getResultList () .

Вот мой код:

String hql="from DrawUnusedBalance where unusedBalanceDate= :today";
Query query=em.createQuery(hql);
query.setParameter("today",new LocalDate());

DrawUnusedBalance drawUnusedBalance= 
    (DrawUnusedBalance)query.getSingleResult();// we can have only a
                                               // single datum per day
//`System.out.println(drawUnusedBalance.toString());`

Проблема в том, что если нет строки, генерируется исключение, а если нет, то все работает нормально.Я знаю проблему, но я также ищу лучшее решение.

Я хотел, чтобы если в БД нет строки, я хотел бы получить нулевой объект (вместо получения исключения), поэтому я вставлю новые данные, если они не нулевые, я просто хочу их обновить .

Есть один способ справиться с этим, и я считаю, что это неправильный способ. Это: у меня будет блок try-catch, и если он вызовет исключение, я могу написать, чтобы вставить новые данные в БД в блоке catch. Но я верю, что будет способ получше.

49
задан Floern 16 November 2017 в 03:42
поделиться