我正在尝试做这样的事情
原生SQL:
Select *
from FirstTable ft
right join SecondTable st on (st.ID=ft.ID and ft.fStatus !='b') where ft.fStatus!='b'
简而言之,我只是希望在FirstTable
之类的内容SecondTable
时将[ft.fStatus !='b']
数据映射到SecondTable
。但是当发生这种情况时,我希望得到with
的相应记录。
我搜索了这个并找到了FirstTable
fId | fName | fStatus
++++++++++++++++++++++++++++++
1 | Name1 | b
2 | Name2 | b
3 | Name3 | a
2 | Name4 | b
3 | Name5 | b
4 | Name6 | a
4 | Name7 | a
SecondTable
sId | sName
+++++++++++++++++++
1 | Name1
2 | Name2
3 | Name3
4 | Name4
Expected Output :
fId | fName | sId | sName
++++++++++++++++++++++++++++++++++++++++++++
_ | _ | 1 | Name1
_ | _ | 2 | Name2
3 | Name3 | 3 | Name3
4 | Name6 | 4 | Name4
4 | Name7 | 4 | Name4
个关键字,但这对我的情况没有帮助。
请查看以下示例数据以获取任何参考:
Bundler.require
答案 0 :(得分:0)
您需要在oneToMany
中添加Parent Entity
映射,例如SecondTable
Child Entity
,即FirstTable
。
例如:
class FirstTable{
Integer pkColumn;
SecondTable fId ;
String fName ;
String fStatus;
--Getter and Setters
}
class SecondTable{
Integer sId ;
String sName ;
@oneToManny(mappedBy="fId ")
List<FirstTable> firstTable;
--Getter and Setters
}
预期输出的HQL:
SELECT ft.fId, ft.fName, st.sId, st.sName FROM SecondTable st
LEFT JOIN st.firstTable ft WITH ft.fStatus != 'b'
WHERE (--other Conditions--)