您好我正在使用Eclipselink,我做了一个原生查询来选择2个表的一些字段。我将表Logins映射到模型类中。我不想映射我的表“B”因为我的sql结果只需要这个表的2个字段..我可以将我的Logins表中的这2个字段映射到我的sql结果吗?
我的sql是这样的:
select l.login_id, s.lugarcerto,s.vrum, l.username, l.first_name, l.last_name, l.phone, l.fax_number, l.address, l.zip,
l.address2 as 'birth_date', l.city as 'cpf_cnpj'
from Logins l
join (select se.login_id, lugarcerto = min(case when se.service = 'IM' then '1' end), vrum = min(case when se.service = 'VE' then '1' end)
from (select distinct ad.login_id, substring(ap.Rate_code,(CHARINDEX('-', ap.Rate_code)+1),2) as 'service'
from Ad_Data.dbo.ad ad
join Ad_Data.dbo.ad_pub ap on (ad.ad_id = ap.ad_id)
where ap.ad_type =1) se
group by se.login_id) s on (s.login_id = l.login_id)
我确实映射了Logins表,我想将s.lugarcerto和s.vrum映射到我的SQL查询结果。 无论如何只需将它添加到我的Logins模型中?
答案 0 :(得分:1)
对于您希望将这些值放入的属性进行映射,并且不会导致在实体中缓存它们的问题。
为什么不直接返回实体旁边的值,就像使用JPQL查询一样,例如:“从登录l中选择l,subquery1,subquery2”,即:
Query q = em.createNativeQuery(yourQueryString, "resultMappingName");
在实体中,包含注释:
@SqlResultSetMapping(name="resultMappingName",
entities={@EntityResult(entityClass=com.acme.Logins.class, )},
columns={@ColumnResult(name="LUGARCERTO"), @ColumnResult(name="VRUM")}
)
最诚挚的问候, 克里斯