我有2个表格可以说fi
和branchMst
:
------------------ ---------------------
| fi | | branchMst |
------------------ --------------------
| fi_id | | branchId |
| uid | | branchCode |
| branch_code | | branchName |
------------------ ----------------------
现在为了获得每个fi的UID和分支名称:
SQL:
select uid,branchName from fi left join branchMst bm
on fi.branch_code=bm.branch_code;
它将为我提供所需的记录,但我想通过Hibernate Association进行相同的操作。
有些疑惑:
1)branchCode不是branchMst中的主键,因此如何定义我的一对多关联。
2)如果我在5个表上定义关联并且我只想要来自2个表的数据,那么所有关联映射是否仍然适用?
答案 0 :(得分:1)
不引入关联
select uid, branchName from fi, branchMst bm where fi.branch_code = bm.branch_code;
select uid from fi where branch_code not in (select branch_code from branchMst);
然后以编程方式组合结果。
更多详情here。
使用关联
1)您不需要一对多关联,您需要一对一。但是您需要将fi
表更改为引用branchId(PK,我假设)。然后使用:
select fi.uid, bm.branchName from Fi fi left join BranchMst bm
2)我不完全理解你的意思,但你可以根据需要定义与多个实体的关联,你当然可以只阅读你的查询所需的内容。
关联不会更改fi
或branchMst
您可以在fi
上创建一个视图,该视图将提供branchId
列,然后将Fi
实体映射到该视图。
关联中没有任何数据库更改
这是不可能的。见question.