前提:
ThirdPartyAppPayChannel ,ThirdPartyPayChannel兩個表裡面一個相同的字段
第一種方式:
SELECT
new map (
c.isEnabled AS appisEnabled,
ac.isEnabled AS channelisEnabled
)
FROM
ThirdPartyAppPayChannel c,
ThirdPartyPayChannel ac
WHERE
ac.mscCode = c.mscCode
AND c.mscCode = 'J00264'
Query query = em.createQuery(hql);
List<Map<String, Object>> = query.getResultList();
傳回的結果集map為{channelisEnabled=false, appisEnabled=true}
第二種方式:
使用JPA的EntityManager,原生sql查詢
SELECT
c.is_enabled ,c.isEnabled
FROM
sdk_third_party_app_pay_channel c,
sdk_third_party_pay_channel ac
WHERE
ac.mscCode = c.mscCode
AND c.mscCode = 'J00264'
query = em.createNativeQuery(sql.toString());
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
再結果集map中就隻會出現一個{is_enabled=false},原因是因為查詢結果将字段名作為map的key,然後兩個字段名相同就會出現其中一個的值導緻結果集中隻有一個字段的資訊。