JPA实体复合索引集合

时间:2011-11-09 13:01:39

标签: hibernate list jpa entity composite-key

我在我的项目中使用JPA + hibernate。我必须从现有的数据库中检索数据,并且不能对其进行修改。

架构就像,有多个组织,每个公司都有很多账单,每个账单都有很多线条。

organization 
{

 id;

 name;

 ...
 }

bill 
{

   id;

   organization o;

   amount;

   ....

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


lineitem
{
     id;

     organization o;

     (EAGER)
     bill b;


     itemCode

     .....
}

数据库架构中的索引(当前存在) 账单表 - &GT; orgId(非唯一索引)

lineitem表 - &GT; orgId,billId

当请求账单时,它正在执行此操作

Select *
from bills
where id = ?

这很好,因为它是对主键的提取。现在它取出了lineitems

正在做

select * from lineitems where billId = ?

billId上的数据库级别没有索引。 orgId,billId上有一个非唯一的复合索引。

我需要做什么才能让hibernate使用orgId和billId一起获取lineitems .. ..

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

我不知道什么是合适的头衔。

谢谢。

1 个答案:

答案 0 :(得分:0)

通过删除帐单实体中的mappedBy=bill(对于lineitems列表),然后使用@joincolumns同时使用org_id和bill_id进行连接