hibernate

发布时间 2023-04-12 11:32:41作者: 九五挥了挥手

HQL:

hibernate不支持select子查询,from子查询,on关键字

碰上这三类情况,

方案一:原生sql。用了,踩坑走完了。所以有了这篇随笔。

方案二:虚拟实体。还没用过

 

hibernate原生sql问题:

entityManager.createNativeQuery;
原生SQL查询完后,结果集问题:
1. 指定entity。那就返回那个实体
2. 不指定,多行多列返回List<Object[]>,多行单列返回List<Obect>
以为这就完了?不,这才刚开始
分页查询时,从第二页开始,只要list的size>0。返回结果集内就会多个ROWNUM_的属性。不注意这个属性,直接强转Object,就会直接挂!
这时,map,万能的神
hibernate可能在5.2版本后,从unwrap,从SQLQuery.class换成了NativeQueryImpl.class,这时就有了该表达式
query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

ok,令结果集返回map了。map的key都是大写。可能原生sql入库转sql就是自动转大写了。没看源码前,谁也不知道。以后有条件记得翻翻这块源码是不是转大写了
解析map返回吧。

另外,有需要可以map转vo对象。