2011-11-09 84 views
0

我在我的项目中使用JPA + hibernate。我必须从已经存在的数据库中检索数据,并且不能对其进行修改。JPA实体复合索引集合

架构就像是有多个组织,每个公司都有很多账单,每个账单都有很多lineitems。 > ORGID(非唯一索引)

lineitem表 - - > ORGID,BILLID

当纸币

organization 
{ 

id; 

name; 

... 
} 

bill 
{ 

    id; 

    organization o; 

    amount; 

    .... 

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


lineitem 
{ 
    id; 

    organization o; 

    (EAGER) 
    bill b; 


    itemCode 

    ..... 
} 

在数据库模式(目前存在的) 票据表 的索引正在请求,它是这样做的第一个

Select * 
from bills 
where id = ? 

这是好的,因为它的主键上提取。现在,它获取的了LineItem

它做

select * from lineitems where billId = ?

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

什么我必须把这样的话Hibernate使用ORGID与BILLID一起取了LineItem ..作为..

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

我不知道这将是一个合适的标题。

谢谢。

回答

0

它工作在该法案实体移除mappedBy=bill(对了LineItem列表),然后使用@joincolumns同时使用org_id和bill_id的加入