我在我的项目中使用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 = ?
我不知道什么是合适的头衔。
谢谢。
答案 0 :(得分:0)
通过删除帐单实体中的mappedBy=bill
(对于lineitems列表),然后使用@joincolumns
同时使用org_id和bill_id进行连接