Hibernate HQL中的多个连接条件,而映射数据而不是where子句

时间:2018-03-09 15:30:07

标签: hibernate hql

我正在尝试做这样的事情

原生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

1 个答案:

答案 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--)
相关问题