Внешний ключ 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)

Есть идеи?

Джон Д.

0 ответов

Другие вопросы по тегам