几乎所有内容都在标题中......当应用程序启动时,持久性工作正常,当应用程序关闭时行仍在数据库中,但是一旦加载了应用程序,行就被删除了......
我正在使用已经存在的数据库结构,通过mysql5 SGBD。
似乎来自我的实体经理声明。以下是我的代码的几行(实体管理器语句和persistence.xml)
entityManager声明:
entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory(resourceMap.getString("entityManager.persistenceUnit")).createEntityManager();
query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery(resourceMap.getString("query.query"));
的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="AnalysesPU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider
<class>solianceanalysesmanager.Produits
<properties>
<property name="toplink.jdbc.user" value="XXX"/>
<property name="toplink.jdbc.password" value="X"/>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/Analyses"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
有人知道这个奇怪的问题吗? 我已经建议我的entityManager在其声明中重新初始化持久化上下文...
PS:因为我是法国人,所以我可能会误用或拼写错误的单词。随意请我重新制定。答案 0 :(得分:2)
默认情况下,TopLink Essentials不会重新创建表,但可以在persistence.xml中对其进行配置。
请参阅, http://wiki.eclipse.org/EclipseLink/Examples/JPA/DDL
我的猜测是你在使用Glassfish?我相信Glassfish默认在开发模式下执行此操作,并且您需要配置一些Glassfish设置以避免这种情况。我不确定它是如何在Glassfish中配置的,也许是别人做的。
答案 1 :(得分:2)
所以,问题是:尽管有persistence.xml设置,Netbeans默认行为是一种自动的“drop and create”策略。
构建项目后,使用.jar将不会重置数据库表。
答案 2 :(得分:1)
你的persistence.xml错过了一些属性定义...你必须指定实体管理器如何表现,它将丢弃并创建参数作为默认设置。这就是加载应用程序时删除所有行的原因。尝试添加此行以更改jpa行为:
<property name="toplink.ddl-generation" value="create-tables"/>