前提:
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
最新推荐文章于 2024-08-07 21:08:36 发布
本文对比了两种SQL查询方法在处理相同字段时的不同表现。一种方法返回了完整的字段信息,而另一种方法则因字段名冲突仅返回了一个字段的值。通过具体示例展示了如何避免字段名冲突,并解释了为何会出现这种现象。
762

被折叠的 条评论
为什么被折叠?



