3
데이터베이스에 삽입하는 서블릿이 하나 있습니다. 이것은 잘 작동합니다. 두 번째 서블릿은 첫 번째 서블릿이 무엇을 삽입했는지 표시합니다. 그러나 서블릿을 표시 할 때마다 내 모든 테이블의 모든 레코드가 삭제됩니다! 내 JPA 구현은 EclipseLink이고 db는 MySQL입니다.JPA EntityManager가 데이터베이스의 모든 레코드를 삭제합니다.
내가 EntityManagerFactory를 검색하는 방법이 db 스키마의 레크리에이션을 트리거 할 수 있습니까?
EntityManagerFactory factory;
factory = Persistence.createEntityManagerFactory("gate");
EntityManager em = factory.createEntityManager();
List list;
try{
Query query = em.createQuery("SELECT i from PersistentItem i");
list= query.getResultList();
System.out.println(list.size());
}finally{
em.close();
}
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("title", "List of all items");
myModel.put("itemList", list);
return new ModelAndView("list", "model", myModel);
내 persistence.xml을 : 당신이 생각으로
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="gate" transaction-type="RESOURCE_LOCAL">
<description>Eclipselink</description>
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>info.lenni.gate.persistence.PersistentItem</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/gate" />
<property name="eclipselink.jdbc.user" value="root" />
<property name="eclipselink.jdbc.password" value="" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
<property name="eclipselink.logging.level" value="OFF"/>
</properties>
</persistence-unit>
감사합니다! 나는 이것이 당신이 말할 때입니다 가정 EclipseLink는 모든 스타트 업을위한 것이 아니라 스키마를 다시 생성합니다. –