0

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

  1. 资产表。
  2. 交易表。
  3. 员工表。

现在,

a) Asset 可以有多个 Transactions 之间的关系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 时,它会给出异常 employeeTbl 在 AssetTbl 中不存在。我的架构有问题吗?

4

1 回答 1

1

我相信 AssetTbl 有 transactionId。事务表有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>
于 2017-05-22T14:56:50.107 回答