Hibernate не использует схему и имя каталога в генерации идентификатора с увеличением стратегии - PullRequest
1 голос
/ 01 апреля 2010

Я использую стратегию приращения гибернации для создания своих идентификаторов на своих объектах.

@GenericGenerator(name="increment-strategy", strategy="increment")
@Id @GeneratedValue(generator="increment=strategy")
@Column(name="HDR_ID", unique=true, nullable=false)
public int getHdrId(){
     return this.hdrId;
}

Сущность имеет следующую табличную аннотацию

@Table(name = "PORDER.PUB.PO_HEADER", schema = "UVOSi", catalog = "VIRT_UVOS")

Обратите внимание, у меня есть два источника данных.

Когда я пытаюсь вставить объект, Hibernate создает следующий оператор SQL: выберите max (hdr_id) из PORDER.PUB.PO_HEADER Это приводит к следующей ошибке: Заданная группа неоднозначна, повторите запрос, указав полное имя группы.

Когда я создаю запрос вручную с entityManager.createQuery () hibernate использует полное имя

select XXX from VIRT_UVOS.UVOSi.PORDER.PUB.PO_HEADER

и это прекрасно работает. Так как же заставить Hibernate использовать полное имя в автогенерации Id?

Btw. Я использую Hibernate 3.2 и Seam 2.2 на JBoss 4.2.3

Привет

Immo

1 Ответ

0 голосов
/ 02 апреля 2010

Я думаю , что Hibernate должен соблюдать атрибуты catalog и schema @Table при использовании стратегии increment. Это может быть ошибкой, и я не смог найти ничего похожего в Jira аннотаций Hibernate. Я бы поднял вопрос.

Обновление: На самом деле, я только что заметил, что JPA 2.0 представил новые атрибуты schema и catalog в @SequenceGenerator аннотация. Таким образом, я не уверен, что ожидать от поставщика JPA 1.0 (и мое первоначальное предположение, что поставщик JPA должен использовать информацию из аннотации @Table, может быть неправильным), спецификация не ясна по этому поводу (или я не мог не найти информацию).

...