В моем коде я использую JSF - интерфейс, EJB-Middile Tier и JPA подключаются к DB. Вызов EJB с использованием Webservices. Использование MySQL в качестве DAtabase.
Я создал таблицу избирателей, в которую мне нужно вставить запись.
Я передал значения из JSF в EJB, он работает. Я создал класс контроллера JPA (который автоматически генерирует код постоянства на основе классов базы данных)
Пример: получение менеджера организации и т. Д.,
em = getEntityManager();
em.getTransaction().begin();
em.persist(voter);
em.getTransaction().commit();
Я также создал именованный запрос:
@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"),
Но все еще не можете вставить запись?
Может ли кто-нибудь помочь мне вставить запись в базу данных через JPA (объект постоянства)?
Обновление:
Если мы используем диспетчер управляемых сущностей контейнеров, нужно ли нам снова начинать и фиксировать транзакции ...
как это:
em.getTransaction().begin();
em.getTransaction().commit();
Я написал:
Voter v= new Voter(voterID,password,partSSN,address,zipCode,ssn,vFirstName,vLastName,d1,voterFlag);
em.persist(v);
Но это приводит к исключению нулевого указателя.
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)