多表连接在hibernate中

时间:2017-05-22 06:52:07

标签: hibernate multi-table

我有一个案例,我必须加入3个表。情况如下:

  1. 资产表。
  2. 交易表。
  3. 员工表。
  4. 现在,

    a)资产可以有多个交易,其关系为OneToMany b)一个交易只能属于一个员工,一对一关系。

    - >我必须获得一名员工的资产清单。

    我的架构是:

    a) AssetTbl:
    
    @Id
    @ColumnName("ASSETID")
    int assetId;
    
    @OneToMany()
    @JoinColumn(name="ASSET_ID",referncedColumnName="AssetId")
    List<TransactionTbl> trans;
    
    b) TransactionTbl:
    
    @Id
    @ColumnName("TRANS_ID")
    int transId;
    
    @ColumnName("ASSET_ID")
    int assetId;
    
    @OneToOne()
    @JoinColumn(name="Emp_ID",referncedColumnName="Emp_Id")
    EmployeeTbl emp;
    
    c) EmployeeTbl:
    
    @Id
    @ColumnName("Emp_ID")
    int empId;
    

    当我加入并运行Query时,它给出了Exception employeeTbl在AssetTbl中不存在。我的架构有什么问题吗?

1 个答案:

答案 0 :(得分:1)

我相信AssetTbl有transactionId。 Transaction表有employeeId作为参考。

请查找以下查询以获取emp的资产。

@Query("select assetTbl from AssetTbl as assetTbl
inner join assetTbl.trans as trans
inner join trans.emp as emp
where emp.empId = :empId)

<query name="findAssetByEmployee">
    <query-param name="empId" type="long"/>
    select assetTbl from AssetTbl as assetTbl
    inner join assetTbl.trans as trans
    inner join trans.emp as emp
    where emp.empId = :empId
</query>