2010-12-02 87 views
0

嗨我使用Eclipselink,我做了一個本地查詢來選擇一些2表的字段。我將我的表格登錄映射到模型類中。我不想映射我的表「B」,因爲我的sql結果只需要這個表的兩個字段。我可以將我的登錄表中的這兩個字段映射到我的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)

我做地圖登錄表,我想s.lugarcerto和s.vrum映射到我的SQL查詢結果。 有沒有辦法將它添加到我的登錄模型?

回答

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")} 
) 

最好的問候, 克里斯

相關問題