myo2oaym 发表于 2024-2-24 14:39:36

关于O2OA内置数据库H2对原生SQL的兼容性问题

本帖最后由 myo2oaym 于 2024-2-24 14:39 编辑

问题现象:
1.环境:私有化部署 系统版本:8.2.3,数据库为H2
在流程应用的<查询配置>中新建查询语句,选择<原生SQL>,查询<系统表>中的<属性对象存储字段>,系统无法返回查询结果。


<属性对象存储字段>中数据为JSON对象,推测可能是JSON解析错误;
日志中关键的报错信息:
2024-02-24 11:34:12.522 INFO System.err - javax.servlet.ServletException:java.lang.IllegalArgumentException: jdk.internal.ref.PhantomCleanable<?>declares multiple JSON fields named next
2024-02-24 11:34:12.647 INFO System.err - Caused by:java.lang.IllegalArgumentException: jdk.internal.ref.PhantomCleanable<?>declares multiple JSON fields named next

2.环境:官网演示环境 系统版本:8.2.3,数据库为mysql
使用与上文同样的查询配置,官网演示环境可以正常返回查询结果。

类似帖子:
经检索,其他帖子有提到类似问题,但未明确问题根源
原生SQL问题 - 设计开发 - 藕粉社区 - O2OA(翱途)开发平台 - O2OA
原生SQL访问数据报错 - 设计开发 - 藕粉社区 - O2OA(翱途)开发平台 - O2OA

疑问:
1. H2数据库,是否支持使用SQL查询包含json的字段
2. 若要用<原生SQL>,查询<系统表>中的<属性对象存储字段>,是否必须将内置数据库H2切换为其他数据库?
3. 若要用<原生SQL>,有没有不切换数据库的其他解决方法?










论坛管理员 发表于 2024-2-26 10:00:26

您试试select * 可不可以呢,这个看起来是h2数据库不支持的问题
另外,我们是不建议使用h2数据库的,如果您只是单单去验证一下环境,这个是没有问题,可以的,如果您是自己去使用比如开发或者正式环境,还是建议您换更稳定的数据库

myo2oaym 发表于 2024-3-2 21:21:18

论坛管理员 发表于 2024-2-26 10:00
您试试select * 可不可以呢,这个看起来是h2数据库不支持的问题
另外,我们是不建议使用h2数据库的,如果您 ...

select * 试过也不行,经过分析,问题根源在于:当尝试在查询语句中获取<属性对象存储字段>时,查询服务调用失败,报server 500错误,返回的服务调用结果为错误信息;此时,O2仍然尝试对返回的服务调用结果(非JSON)进行JSON解析,进一步导致贴文中的JSON解析报错。

以上,谢谢管理员的回复。
页: [1]
查看完整版本: 关于O2OA内置数据库H2对原生SQL的兼容性问题