2014-01-06 4 views
0

Я создаю класс сущности из базы данных, и я хочу, чтобы вычеркнуть сущность из сервлета. Я написал следующий код:Java Persistence API в сервлетах

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    try (PrintWriter out = response.getWriter()) { 

     EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("UniAppPU"); 
     EntityManager em = emFactory.createEntityManager(); 
     Query query = em.createNamedQuery("Uniuser.findByUsername"); 
     query.setParameter("Username","clayd"); 
     List<Uniuser> result = query.getResultList(); 

     out.println("<p>" + result.size() + "</p>"); 

     em.close(); 

    } 
} 

У меня есть простой HTML-страница, где форма действия, отправляемая на этот сервлет.

<form method="post" action="processLogin"> 
     <input type="submit" value="Sign in"> 

    </form> 

и это сообщение:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

Сохранение XML-файл состоит в следующем:

<persistence-unit name="UniversityApplicationPU" transaction-type="JTA"> 
<jta-data-source>UniversityEntity</jta-data-source> 
<exclude-unlisted-classes>false</exclude-unlisted-classes> 
<properties/> 

Это не работает, пока ошибки не быть показано на рисунке. У вас есть какие-то идеи, что не так, пожалуйста? Большое спасибо.

+2

Существует множество определений «не работает». На что вы ссылаетесь? –

+0

Код сервлета для извлечения данных из базы данных. Предполагается показать, сколько записей в таблице, но ничего не отображается. – Clayton

+0

Вы проглатываете какое-либо исключение, может быть или может быть ваше мнение, просто скрывает эту часть проверки raw html –

ответ

0

Этот код отсутствует что-то вроде ..

Сначала вы используете неправильное имя устройства настойчивость. Используйте это

EntityManagerFactory emFactory = Persistence.createEntityManagerFactory ("UniversityApplicationPU");

Во-вторых, вам нужно начать транзакцию перед любым извлечением/обновлением. Ваш фактический код будет выглядеть так.

EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("UniversityApplicationPU"); 
    EntityManager em = emFactory.createEntityManager(); 
    em.getTransaction.begin(); 
    Query query = em.createNamedQuery("Uniuser.findByUsername"); 
    query.setParameter("Username","clayd"); 
    List<Uniuser> result = query.getResultList(); 
    out.println("<p>" + result.size() + "</p>"); 
    em.close(); 
    emFactory.close(); 

Надеюсь, что это сработает.

Смежные вопросы