Внешний ключ Toplink со значением ноль
Я модернизирую приложение, которое использует базу данных Oracle 11g с Toplink.
У меня проблема с внешними ключами с нулевым значением.
Приложение довольно сложное, поэтому я создал простой проект с БД из двух таблиц, Toplink настроен так же, как приложение и несколько тестов JUnit, для передачи простых запросов в БД. Одна таблица (Сторона) имеет ссылку на другую таблицу (Адрес). Адрес может быть использован многими Сторонами. Он отображается как один-ко-многим в Toplink Workbench
Все работает нормально, пока я не попытаюсь создать или обновить Сторону, ссылающуюся на Адрес с идентификатором ноль. Это вызывает исключение Toplink.
NB. Это не проблема создания адреса с нулевым идентификатором, и это не проблема создания или обновления партии с адресом больше нуля.
Вот исключение, которое я вижу при создании:
[TopLink Warning]: 2014.01.22 11:51:26.333--UnitOfWork(76409034)-- Thread(Thread[main,5,main])--Exception [TOPLINK-4002] (Oracle TopLink - 11g Release 1 (11.1.1.6.0) (Build 111018)): oracle.toplink.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-00001: unique constraint (PARTIES.ADR_PK) violated
Error Code: 1
Call: INSERT INTO PTY_ADDRESS (ADR_ID, ADR_STREET, ADR_COUNTRY, ADR_NAME, ADR_CITY) VALUES (?, ?, ?, ?, ?)
bind => [0, street, country, venue, city]
Query: InsertObjectQuery(ch.hp.parties.Address@2e931d05)
Есть идеи?
Джон Д.