Попытка удалить 2 строки в базе данных с использованием JPA. Один объект создан из идентификатора, но другой нет - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь удалить 2 строки (по 1 в каждой таблице) с одинаковым идентификатором, в моем классе обслуживания объект breweries создается с идентификатором отлично, но когда объект BreweriesGeocode пытается создать BreweriesGeocode объект не справляется с попыткой и приводит меня к моей ошибке. jsp page.

Строка кода, которая вызывает его разрыв, - это

   bg = em.createNamedQuery("BreweriesGeocode.findById", BreweriesGeocode.class)
            .setParameter("id", (id))
            .getSingleResult();

код для всего метода deleteAnBrewery в BreweriesService. java is

public void deleteAnBrewery(int id) {
    EntityManager em = DBUtil.getEMF().createEntityManager();
    EntityTransaction trans = em.getTransaction();
    Breweries b = null;
    BreweriesGeocode bg = null;
    try {                                                                                            
        b = em.createNamedQuery("Breweries.findById", Breweries.class)
                .setParameter("id", (id))
                .getSingleResult();
        bg = em.createNamedQuery("BreweriesGeocode.findById", BreweriesGeocode.class)
                .setParameter("id", (id))
                .getSingleResult();
        trans.begin();
        em.remove(em.merge(b));
        em.remove(em.merge(bg));
        trans.commit();
    } catch (Exception ex) {
        System.out.println("Error in getting property details: " + ex);
    } finally {
        em.clear();
        em.close();
    }

}

Я не получаю никакой ошибки в терминале

1 Ответ

0 голосов
/ 06 марта 2020

Я не установил нулевые объекты вне try, я не знаю, было ли это исправлением, потому что я не думал, что это будет иметь значение, единственным другим изменением было отключение моего Netbeans и опять же, это не надежное решение

public void deleteAnBrewery(int id) {
EntityManager em = DBUtil.getEMF().createEntityManager();
EntityTransaction trans = em.getTransaction();


try {                                                                                            
   Breweries b = em.createNamedQuery("Breweries.findById", Breweries.class)
            .setParameter("id", (id))
            .getSingleResult();
   BreweriesGeocode  bg = em.createNamedQuery("BreweriesGeocode.findById", BreweriesGeocode.class)
            .setParameter("id", (id))
            .getSingleResult();
    trans.begin();
    em.remove(em.merge(b));
    em.remove(em.merge(bg));
    trans.commit();
} catch (Exception ex) {
    System.out.println("Error in getting property details: " + ex);
} finally {
    em.clear();
    em.close();
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...