jpa查询mysql视图_spring jpa查询视图

这段时间在项目中用到的spring+springmvc+hibernate+jpa框架,今天遇到一个问题:如何用原装的jpa查询视图?

使用过jpa的朋友都知道,这是个很难受的问题,我在网上找了半天也没找到简单的答案,大部分都是先建立视图有关的表和类做关联,然后再手写SQL,很是麻烦,而且最要命的是,数据库表不是我建的,表很多,很乱,后来求助大佬,得到一个解决办法:

1.使用原生SQL解决,即使用EntityManager类,然后用object[]数组接收;

2.由于做表和实体类的关联,就没有办法在dao层写方法,就无法继承jpa,要不这样就会报错,所以方法是建立在service实现层

StringBuffer querySql = new StringBuffer("select a.* from art_user a , art_user_authority b where a.id = b.user_id and a.company_id = :companyId " +

" and b.authority_name = :authorityName");

Query query= entityManager.createNativeQuery(querySql.toString() , User.class);

query.setParameter("companyId", companyID);

query.setParameter("authorityName", authorityName);

List list =query.getResultList();

}

其实这样写感觉并不合适,后期有什么合适的解决方案就会替换掉,如果有哪位大佬有什么方法也可以提出来大家一块参考一下。

补充:

这几天在网上又找了找,发现@Table是可以用来注解视图的,但是在视图没有主键,而entity不加主键会报错,所以要加一个@Id空主键,其他的和普通表没什么区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值