2011-08-28 2 views
0

데이터베이스 연결과 일부 엔터티를 만들었으므로 이제 데이터베이스 기능을 테스트하려고합니다. 다른 사용자 정보와 함께 고유 한 사용자 이름을 가진 사용자 엔티티 클래스가 있습니다. 지금은 단순히 새로운 사용자 및 프로필을 만들고 함께 매핑 한 다음 유지하려고합니다. 코드를 테스트 할 때 성공적으로 실행되지만 DB는 업데이트되지 않습니다. 다음은 내가 가지고있는 것입니다.기존 데이터베이스에 새로운 엔터티 유지 JPA

package servlets; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.annotation.Resource; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 
import javax.persistence.PersistenceUnit; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.transaction.UserTransaction; 

import entities.Profile; 
import entities.User; 


@WebServlet("/NewUser") 
public class NewUser extends HttpServlet { 

    @Resource 
    UserTransaction utx; 
    @PersistenceUnit 
    EntityManagerFactory emf; 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String username = request.getParameter("username"); 
     String email = request.getParameter("email"); 
     String firstname = request.getParameter("firstname"); 
     String lastname = request.getParameter("lastname"); 
     String phone = request.getParameter("phone"); 
     String address1 = request.getParameter("address1"); 
     String address2 = request.getParameter("address2"); 


     try { 
      utx.begin(); 
      EntityManager em = emf.createEntityManager(); 

      //create User & Profile 
      User u = new User(); 
      u.setUsername(username); 
      Profile p = new Profile(); 
      p.setUser(username); 

      //add email to profile's list 
      List<String> emails = new ArrayList<String>(); 
      emails.add(email); 
      p.setEmails(emails); 

      //assign the profile to the user 
      u.setProfile(p); 

      //persist user to the database 
      em.persist(u); 
      utx.commit(); 

      em.close(); 
      emf.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     response.sendRedirect("index.jsp"); 
    } 
} 

나는 응용 프로그램에서 뭔가 잘못하고 있거나 다른 곳에서 문제가 있습니까?

편집 : 다음 오류가 발생했습니다 : 예외 설명 : 드라이버 [null], 사용자 [null] 및 URL [null]에서 연결을 얻을 수 없습니다. 예상되는 드라이버 클래스와 URL을 설정했는지 확인하십시오. 로그인, persistence.xml 또는 sessions.xml 자원을 확인하십시오. jdbc.driver 속성은 데이터베이스 플랫폼과 호환되는 클래스로 설정되어야합니다.

오류의 원인을 잘 모르겠습니다 ... db 연결을 확인했는데 모든 것 같습니다. 순서대로. :/

내 persistence.xml 파일 : 나는 컨테이너 관리 트랜잭션을 사용 적이 없다하지만의 persistence.xml 적어도이

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="myPersistenceUnit" > 
    <jta-data-source>jdbc/mydatasource</jta-data-source> 
     <class>entities.User</class> 
     <class>entities.Profile</class> 
     <class>entities.Message</class> 
     <class>entities.Image</class> 
     <properties> 
      <property name="eclipselink.ddl-generation" value="create-tables"/> 
      <property name="eclipselink.ddl-generation.output-mode" value="both"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

답변

0

.

<persistence-unit name="myPersistenceUnit" transaction-type="JTA"> 
관련 문제