Я создал соединение с базой данных и некоторые объекты, теперь я пытаюсь проверить функциональность моей базы данных. У меня есть класс сущности User, который имеет уникальное имя пользователя наряду с некоторой другой информацией. Прямо сейчас я пытаюсь просто создать нового пользователя и профиль и сопоставить их вместе, а затем сохранить их. Когда я тестирую код, он успешно проходит, но БД не обновляется. Вот что у меня есть:
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 должен быть задан класс, совместимый с вашей платформой базы данных
Я не уверен, что делать с ошибкой, однако ... Я проверил свое соединение с БД, и, кажется, все в порядке. : /
Мой файл 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>