我可以在DB中填充2个表,其中表具有映射(一个表具有来自其他的FK)。该
EclipseLink DataSource显示刷新到DB已经完成了。
我正在尝试重写表(第二次使用相同的数据),而persistence.xml有
属性子句如下:
<property name="eclipselink.ddl-generation" value="drop-create-tables" />
但是我发现在重写之前没有删除(擦除)前面的表,因此会被以下关于重复键的异常消息拒绝:
“内部例外: java.sql.SQLIntegrityConstraintViolationException:语句是 中止,因为它会导致唯一的重复键值 或主键约束或唯一索引 “主机”上定义了“SQL120206135740510”。 “(主页是指向的表格 到FK)。
我在persistence.xml中缺少什么,或者应该在重写之前使表丢失? 下面是persistence.xml文件(DB文件名为'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>
答案 0 :(得分:1)
“drop-create-tables”应该是“drop-and-create-tables”
答案 1 :(得分:0)
尝试添加值为Finest或ALL的“eclipselink.logging.level”属性,以查看可能未执行删除的原因。