多Table加入休眠
Multi-Table join in hibernate
我有一个案例,我必须加入 3 tables。情况如下:
- 资产table.
- 交易table.
- 员工table.
现在,
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;
当我加入并运行查询时,它给出异常 employeeTbl 在 AssetTbl 中不存在。我的架构有问题吗?
我相信 AssetTbl 有 transactionId。交易 table 有 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>
我有一个案例,我必须加入 3 tables。情况如下:
- 资产table.
- 交易table.
- 员工table.
现在,
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;
当我加入并运行查询时,它给出异常 employeeTbl 在 AssetTbl 中不存在。我的架构有问题吗?
我相信 AssetTbl 有 transactionId。交易 table 有 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>