我想获得对象中"a_Id, b_id, c_Id"
的映射。使用Spring-Data-JPA
获取此信息的方式是什么?
我有以下表格和相应的实体。
Table A { Entity A {
a_id, @Id pvt long aId;
b_id, @ManyToOne
c_id, @JoinColumn(name="b_id")
a_field_1 pvt B b;
@ManyToOne
} @JoinColumn(name="c_id")
pvt C c;
pvt String aField1;
Table B { Entity B {
b_id, @Id pvt long bId;
b_field_1, @OneToMany(mappedBy="b")
} pvt A a;
pvt String bField1;
}
我们可以使用本机查询单独获取b_id
和c_id
。但我们仍然需要将A,B,C之间的映射存储在对象中,以便知道C的哪些值与B相关。
我可能会遗漏一些非常简单的东西,但是找不到方法w / o使用a.getB().getBId()
,这也意味着将执行每个b_Id
的个别查询,我想避免这种情况,即使我已经通过本机查询获得了b_id
。另外,我并不热衷于FetchType.EAGER
使用getB()
。任何建议都表示赞赏!
答案 0 :(得分:0)
使用构造函数
尝试 DTO投影使用构造函数
创建DTO类class ABC {
long aId,bId,cId, ...;
public ABC( long aId, long bId, long cId, ...){
//Set values here
}
//provide getters/setters
}
尝试将Hibernate查询视为
"select new " +
" your.full.package.ABC(" +
" a.aId, " +
" b.bId, " +
" c.cId, ..." +
" ) " +
"from A a join a.b b join a.c c " +
"where some condition > :"