开发者

Persisting new Entity to existing Database JPA

I've created a database connection and some entities, now I'm trying to test the functionality of my database. I have a User entity class, which has a unique username along with some other information. Right now I'm trying to simply create a new User and Profile and map them together, then persist them. When I test the code, it successfully runs through, but the DB is not updated. Here's what I have:

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");
    }
}

Am I doing something wrong or is the problem somewhere else in the application?

EDIT: I found the following error: Exception Description: Unable to acquire a connection from driver [null], user [null] and URL [null]. Verify that you have set the expected driver class and URL. Check your login, persistence.xml or sessions.xml resource. The jdbc.driver property should be set to a class that is compatible with your database platform

I'm not sure what to make o开发者_JAVA技巧f the error, however...I've checked my db connection and everything seems to be in order. :/

My persistence.xml file:

<?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>


I have never use container managed transactions but your persistence.xml at least have.

 <persistence-unit name="myPersistenceUnit" transaction-type="JTA">
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜