私はスタンドアロンJavaアプリケーションでHibernate + Springを統合しようとしていますが、データベース操作は機能しませんが、私はコード/設定に何が欠けているのか分からないので、私はグーグルでいくつかの研究をしましたが、私の問題を解決するものは見つけられませんでした。だから誰かが私を助けることができるように私は自分のコード/設定を投稿しています。スプリングマネージドEntityManagerを使用してデータを保持することができません
エンティティクラス:
package com.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "EMP_ID")
private Integer empoyeeId;
@Column(name = "EMP_NAME")
private String employeeName;
public Integer getEmpoyeeId() {
return this.empoyeeId;
}
public void setEmpoyeeId(Integer empoyeeId) {
this.empoyeeId = empoyeeId;
}
public String getEmployeeName() {
return this.employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
}
DAOクラス
package com.dao.impl;
import javax.persistence.EntityManager;
import com.dao.IEmployeeDao;
import com.entity.Employee;
public class EmployeeDao implements IEmployeeDao {
private static final Logger LOGGER =
LogManager.getLogger(EmployeeDao.class);
@PersistenceContext(unitName = "testPU")
private EntityManager em;
@Override
public Employee create(Employee aEmployee) {
return this.em.merge(aEmployee);
}
@Override
public Employee fetchEmployeeById(Integer aEmployeeId) {
return this.em.find(Employee.class, aEmployeeId);
}
}
メインクラス:フェッチしようとしたとき、私は、nullポインタ例外を取得しています上記のクライアントコードと
package com.client;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dao.IEmployeeDao;
import com.entity.Employee;
public class Client {
private static final Logger LOGGER = LogManager.getLogger(Client.class);
public static void main(String[] args) throws BeansException,
Exception {
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationcontext.xml");
LOGGER.info("client invoked");
IEmployeeDao employeeDao =
(IEmployeeDao)applicationContext.getBean("employeeDao");
Employee employee = new Employee();
employee.setEmployeeName("Suraj Kumar");
employee = employeeDao.create(employee);
employee =
employeeDao.fetchEmployeeById(employee.getEmpoyeeId());
//getting null pointer here as employee is null
// EntityManagerFactory emf =
Persistence.createEntityManagerFactory("testPU");
// EntityManager em = emf.createEntityManager();
// em.getTransaction().begin();
// EmployeeDao employeeDao = new EmployeeDao();
// employeeDao.setEm(em);
// Employee employee = new Employee();
// employee.setEmployeeName("Suraj Kumar");
// employee = employeeDao.create(employee);
// employee =
employeeDao.fetchEmployeeById(employee.getEmpoyeeId());
// em.getTransaction().commit();
// em.close();
// emf.close();
}
}
createを呼び出すことによって返された従業員のIDが従業員である場合、nullを返します。これは、recor dは持続しなかった。
しかし、私は上記のコメントを外したコードをコメントアウトし、今コメントされているコードのコメントを外して、つまり春を使わずに休止状態のみを使用しているときはすべて正常に動作します。私は以下の設定ファイルを提供しました。
applicationContext.xmlを:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="2.0">
<persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.entity.Employee</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/dbname"/>
<property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver"/>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.connection.username" value="user"/>
<property name="hibernate.connection.password" value="password"/>
<property name="hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
persistence.xmlの
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd ">
<import resource="aspects.xml"/>
<bean class="org.springframework.orm.jpa.support.
PersistenceAnnotationBeanPostProcessor"/>
<bean id="myEmf"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="testPU"/>
</bean>
<bean id="employeeDao" class="com.dao.impl.EmployeeDao" />
</beans>
私はまた、側面を使用していますが、私はわからないように、その関連する場合、私は回してみましたように私は、コードを投稿していません私はこの問題に直面していますが、ちょうど1つの奇妙なことが、nullポインタ例外を取得する代わりに、アスペクトをオフにしてしまいます。この場合、EntityManagerクラスのfindメソッドの中から別の例外が発生します。ダオ級nullを返さない
誰かが私にそれを手伝ってもらえますか?
人を聖霊降臨祭の誰もがしてください助けることができますか? –