前提:
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,然后两个字段名相同就会出现其中一个的值导致结果集中只有一个字段的信息。
HQL 定制返回类型map ALIAS_TO_ENTITY_MAP
最新推荐文章于 2023-03-28 14:57:50 发布