2010-02-19 5 views
1

Мы используем Apache Derby 10.5.3.0_1 и hbm2ddl с Hibernate 3.3.xпроблем ограничений с помощью Apache Derby и hbm2ddl

Я получаю ошибку следующих ограничений во время предварительной загрузки SQL на встроенной базе данных Derby. Если я удалю первичный ключ (id) из таблицы create sql, он сможет создать таблицу. Не знаю, в чем проблема.

create table user_flow (id integer not null generated always as identity unique, creation_date timestamp not null, name varchar(255), primary key (id)); 

[INFO] Constraints 'SQL100219175052781' and 'SQL100219175052780' have the same set of columns, which is not allowed. 

ответ

5

Это DERBY-789, я считаю, и до сих пор не было зафиксировано. Основная проблема заключается в том, что столбец объявляется как «уникальным», так и «первичным ключом», что заставляет Derby пытаться создать два индекса ограничений. Поскольку «первичный ключ» уже подразумевает «уникальный», вы можете просто опустить «уникальный», который, я думаю, лучше, чем опустить «первичный ключ».

+0

Похож на известную проблему с дерби, но SQL был сгенерирован инструментом Hibernate 3.3.x hbm2ddl. Не уверен, что есть обходной путь для этого инструмента, чтобы избежать создания уникальных для полей первичного ключа. – Joe

+0

Вышеупомянутая ошибка делает, derby непригодным к использованию с Hibernate 3.3.x означает ли это, что никто не использует это как платформу разработки? Оцените любые указатели или обходные пути, чтобы решить эту проблему. – Joe

+0

Вы пробовали обратиться за советом к Hibernate? Я понимаю, что есть что-то, называемое диалектом Дерби для спящего режима; возможно, вы можете настроить это так, чтобы Hibernate не генерировал этот SQL в этом случае. –