查看: 11806|回复: 3

使用“视图”突破JPQL的限制,实现SQL查询

升级   5.05%

19

主题

23

回帖

505

积分

注册会员

Rank: 2

积分
505
发表于 2022-12-7 17:33:24 | 显示全部楼层 |阅读模式
本帖最后由 ccraise 于 2022-12-7 18:39 编辑

JPQL的数据操纵能力实在有限,稍微复杂一点的查询就无法支持
而且在o2oa系统中的这种用法,限制更多

但是又不想去费力搞开发
那么为了把复杂的查询统计结果给展示出来,怎么办呢?

经测,在当前版本(7.2.7)中,可以通过在数据库中使用使用“视图”来突破限制
我这里是使用Mariadb(同MySQL)做的尝试
尝试步骤如下:
1、创建自建表,编译,重启o2server
2、在数据库里找到自建表(名称形如:QRY_DYN_<自定义的表名>),记下名字,然后把自建的那个表删除或改名(建议改名)
3、在数据库里面新建一个和自建表同名的视图,在这个视图里面写复杂SQL语句,注意视图输出的字段要和前端自建表的字段名相匹配(在数据库里面,o2oa的自建表字段名会在前面多加一个“x”)
4、在o2oa数据中心新建查询。由于我在测试中在数据库直接删除了自建表,因此缺少很多字段,只能以读取局部值的方式使用JPQL来进行查询

这种方式之所以能成功,是因为在数据库里面,select语句查询表和查询视图是没有区别的,因此才能用视图来欺骗o2server,
然后就可以在数据库里面,愉快的写SQL了






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2022-12-8 10:14:53 | 显示全部楼层
点赞
回复

使用道具 举报

升级   5.93%

44

主题

68

回帖

593

积分

注册会员

Rank: 2

积分
593
发表于 2022-12-10 09:40:14 | 显示全部楼层
请问写自建的时候,如果修改的呢
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2022-12-12 09:07:04 | 显示全部楼层
leo-007 发表于 2022-12-10 09:40
请问写自建的时候,如果修改的呢

前端有封装找的table,对自建表进行增删改查
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread