Я могу заполнить 2 таблицы в БД, где таблицы имеют сопоставления (одна таблица имеет FK от другой).
EclipseLink DataSource показывает, что очистка БД выполнена нормально.
Я пытаюсь переписать таблицы (с теми же данными во второй раз), в то время как файл persistence.xml имеет
предложение свойств выглядит следующим образом:
<property name="eclipselink.ddl-generation" value="drop-create-tables" />
пока я не вижу сброса (стирания) предыдущих таблиц перед перезаписью и поэтому получаю отклонение со следующим сообщением об исключении о дублирующем ключе:
"Внутреннее исключение:
java.sql.SQLIntegrityConstraintViolationException: оператор был
прервано, потому что это вызвало бы дублирование значения ключа в уникальном
или ограничение первичного ключа или уникальный индекс, идентифицируемый
«SQL120206135740510» определен для «HOST». "(ХОСТ - указанная таблица
по ФК).
Чего мне не хватает в файле 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>