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