Коллекция составных индексов сущностей JPA - PullRequest
0 голосов
/ 09 ноября 2011

Я использую JPA + Hibernate в моем проекте. Я должен получить данные из уже существующей базы данных и не могу вносить в нее изменения.

Схема похожа на то, что существует несколько организаций, у каждой компании есть много счетов, и у каждого счета есть много строк.

organization 
{

 id;

 name;

 ...
 }

bill 
{

   id;

   organization o;

   amount;

   ....

   (EAGER, mappedBy=bill)
   List<Lineitem> lineitems;
}


lineitem
{
     id;

     organization o;

     (EAGER)
     bill b;


     itemCode

     .....
}

Индексы в схеме базы данных (в настоящее время присутствуют) таблица счетов -> orgId (не уникальный индекс)

стол lineitem -> orgId, billId

Когда запрашивается счет, он делает это первым

Select *
from bills
where id = ?

что хорошо, так как это выборка по первичному ключу. Теперь он получает строковые элементы

делает

select * from lineitems where billId = ?

Нет индекса на уровне базы данных в billId. Существует не уникальный составной индекс для orgId, billId.

Что мне нужно поместить, чтобы hibernate извлекал lineitems, используя orgId вместе с billId .. as ..

select * from lineitems where billId = ? and orgId = ?

Я не знал, что будет подходящим названием.

Спасибо.

1 Ответ

0 голосов
/ 10 ноября 2011

Он работал путем удаления mappedBy=bill в сущности счета (для списка lineitems) и последующего использования @joincolumns, чтобы использовать как org_id и bill_id для объединения

...