小编use*_*680的帖子

通过JPA将记录插入数据库

在我的代码中,我使用的是JSF - 前端,EJB-Middile Tier和JPA连接到DB.使用Webservices.使用MySQL作为DAtabase来调用EJB.我创建了Voter表,我需要在其中插入记录.我将值从JSF传递给EJB,它正在工作.我创建了JPA控制器类(它自动生成基于数据库类的持久性代码)例如:获取实体管理器等,

    em = getEntityManager();
    em.getTransaction().begin();
    em.persist(voter);
    em.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)

我也创建了命名查询:

@NamedQuery(name = "Voter.insertRecord", query = "INSERT INTO Voter v 
values v.voterID = :voterID,v.password = :password,v.partSSN = :partSSN,
v.address = :address, v.zipCode = :zipCode,v.ssn = :ssn, 
v.vFirstName = :vFirstName,v.vLastName = :vLastName,v.dob = :dob"),
Run Code Online (Sandbox Code Playgroud)

但仍然无法插入记录?

任何人都可以帮我通过JPA将记录插入数据库.(持久性对象)?

更新:

如果我们使用容器管理实体管理器,我们是否需要再次编写开始和提交事务...像这样:

em.getTransaction().begin(); 
em.getTransaction().commit(); 
Run Code Online (Sandbox Code Playgroud)

我已经写了:

Voter v= new Voter(voterID,password,partSSN,address,zipCode,ssn,vFirstName,vLastName,d1,voterFlag);
em.persist(v);
Run Code Online (Sandbox Code Playgroud)

但它导致Null指针异常.

SEVERE: java.lang.NullPointerException
    at ejb.Registration.reg(Registration.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
    at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:4038)
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5223)
Run Code Online (Sandbox Code Playgroud)

java jpa

4
推荐指数
1
解决办法
6万
查看次数

标签 统计

java ×1

jpa ×1