Идентификационный генератор в Hibernate с Sybase - PullRequest
0 голосов
/ 29 декабря 2010

Я использую hibernate 3.5 с базой данных Sybase ASE. У меня есть первичный ключ PK1 в моей таблице Table. Я использовал класс генератора выбора для генерации моего первичного ключа.

<id name="pk1" type="java.math.BigInteger">
            <column name="PK_ID" />
              <generator class="select">
                  <param name="key">unique</param>
              </generator>
</id>

У меня есть еще один класс, который использует PK_ID в качестве внешнего ключа, но не первичный ключ. Я сохранил сопоставление для него как

<property name="PK_ID1" type="java.math.BigInteger">
            <column name="SHIP_EVENT_ID" length="23" not-null="false" />
</property>

Когда я использую генератор идентификаторов, это, кажется, работает нормально. Но когда я изменяю его, чтобы выбрать генератор. Это показывает мне исключение нарушения ограничения. Хотя новое значение генерируется и устанавливается для класса pojo для второй таблицы.

Пожалуйста, помогите!

С уважением, Dwarak

1 Ответ

0 голосов
/ 19 января 2011

С таким движком, как ASE, не рекомендуется использовать какой-либо внешний интерфейс OO для внесения изменений в DDL. Конечно, это ошибка в интерфейсе, но не единственная. Более того, у вас есть доступ только к 5% функциональности Sybase. Почему бы не использовать программный пакет Sybase Client, который поставляется бесплатно с ASE. SybaseCentral для всех ваших DDL и административных задач, а также InteractiveSQL для всех ваших задач SQL (DML, хранимые процедуры, тестирование SQL). Оно не только более прямолинейно, но и на 1001 * быстрее * на 1002 * быстрее времени разработки. После того, как вы настроили и протестировали объекты, используйте любой интерфейс, который вам нравится, для выполнения команд (сохраненных процедур или проверенного SQL) для этих объектов.

...