【发布时间】:2012-02-06 17:49:35
【问题描述】:
我可以在数据库中填充 2 个表,其中表具有映射(一个表具有来自另一个表的 FK)。这
EclipseLink DataSource 显示对 DB 的刷新已经完成。
我正在尝试重写表(第二次使用相同的数据),而 persistence.xml 有
属性子句如下:
<property name="eclipselink.ddl-generation" value="drop-create-tables" />
但是我看到在重写之前没有删除(擦除)以前的表,因此被拒绝,并出现以下关于重复键的异常消息:
“内部异常: java.sql.SQLIntegrityConstraintViolationException:该语句是 中止,因为它会导致唯一的键值重复 或主键约束或唯一索引 在“主机”上定义的“SQL120206135740510”。 " ( HOST 是指向的表 由 FK)。
我在persistence.xml 中遗漏了什么,否则应该在重写之前使表下降? 下面看persistence.xml文件(数据库文件被称为'test'。模式是用户名之后的名称(在我的例子中是APP)):
<?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="jpa_test">
<class>Host</class>
<class>Vm</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://im6-64s:1527/test;create=true" />
<property name="javax.persistence.jdbc.user" value="APP" />
<property name="javax.persistence.jdbc.password" value="passw0rd" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="drop-create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
</persistence>
【问题讨论】:
标签: jpa eclipselink