我有一个名为ReqestDetail的实体,并完成了关联和映射,如下面的代码段:
@ManyToOne
@JoinColumn(name="STATUS_C")
private StatusCode statusCode;
//bi-directional many-to-one association to RequestAddressDetail
@OneToMany(mappedBy="requestDetail")
private List<RequestAddressDetail> addressDetails;
我在Named Query下面创建了根据地址获取详细信息。
TypedQuery<RequestDetail> query = em.createQuery( "SELECT t FROM RequestDetail t" +
" LEFT JOIN t.employeeDetail e " +
" LEFT JOIN t.addressDetails ao " +
" LEFT JOIN t.addressDetails ad " +
" WHERE (e.employeeI IN ( :employeeIds ) ) AND " +
" (ao.postI = :postO AND ao.addressTypeC = :addressTypeO " +
" AND ad.postI = :PostD AND ad.addressTypeC = :addressTypeD )" ,
RequestDetail.class );
但是,当我调用query.getResultList()时,它只给我RequestDetail实体的数据,但不提供我在该实体中提到的映射连接的数据。
请告知......
答案 0 :(得分:0)
为什么你认为它应该给你一些联合对象?您的查询候选者是RequestDetail,因此它给出了。如果您执行了JOIN FETCH
,那么您可以获取其他字段,但您还没有这样做(因此将LEFT JOIN
更改为LEFT JOIN FETCH
) - JOIN(没有FETCH)只是方便形成查询的方式..或者,您可以将实体图设置为获取,或者如果您想要那些提取,则在字段本身上设置提取