Мой код EJB:JPA EntityManager NullPointer исключение (которое не должно быть !?)
@Stateless
public class EmployeeBean {
@PersistenceContext(unitName="Eclipselink_JPA")
private EntityManager entitymanager;
public void createEmployee(){
Employee employee = new Employee();
employee.setEid(1201);
employee.setEname("Gopal");
employee.setSalary(40000);
employee.setDeg("Technical Manager");
entitymanager.persist(employee);
entitymanager.getTransaction().commit();
entitymanager.close();
}
}
В принципе, NullPointer исключение происходит в строке, где называется entitymanager.persist, что не должно произойти не так ли?
Мой 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="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">
<class>com.jpa.beans.Employee</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:E:\HQLDB_AJ"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver"/>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
У меня есть eclipselink.jar и другие EclipseLink JPA банки в своем классе пути.
Вот мои объектные компоненты:
@Entity
@Table
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int eid;
private String ename;
private double salary;
private String deg;
public Employee(int eid, String ename, double salary, String deg) {
super();
this.eid = eid;
this.ename = ename;
this.salary = salary;
this.deg = deg;
}
public Employee() {
super();
}
public int getEid() {
return eid;
}
public void setEid(int eid) {
this.eid = eid;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getDeg() {
return deg;
}
public void setDeg(String deg) {
this.deg = deg;
}
@Override
public String toString() {
return "Employee [eid=" + eid + ", ename=" + ename + ", salary=" + salary + ", deg=" + deg + "]";
}
}
Что, кажется, проблема? может ли кто-нибудь помочь? Ив понял это из дня.
Проблема решена: я не должен использовать ресурс локально, потому что я запускал его на сервере приложений. Все равно, спасибо за помощь. хорошо оценено
спасибо плохой попытке. является ли «org.eclipse.persistence.jpa.PersistenceProvider» встроенным в eclipse? нет необходимости добавлять дополнительную банку в мой путь к классу? –
нет .. это реализуется EclipseLink .. Вы, возможно, потребуется добавить банку или Maven зависимость '' ' \t org.eclipse.persistence \t org.eclipse.persistence.jpa \t 2.6.0 '' ' –
@lecarpetrondookmarion это работает ??? –