关于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>,有没有不切换数据库的其他解决方法?
您试试select * 可不可以呢,这个看起来是h2数据库不支持的问题
另外,我们是不建议使用h2数据库的,如果您只是单单去验证一下环境,这个是没有问题,可以的,如果您是自己去使用比如开发或者正式环境,还是建议您换更稳定的数据库 论坛管理员 发表于 2024-2-26 10:00
您试试select * 可不可以呢,这个看起来是h2数据库不支持的问题
另外,我们是不建议使用h2数据库的,如果您 ...
select * 试过也不行,经过分析,问题根源在于:当尝试在查询语句中获取<属性对象存储字段>时,查询服务调用失败,报server 500错误,返回的服务调用结果为错误信息;此时,O2仍然尝试对返回的服务调用结果(非JSON)进行JSON解析,进一步导致贴文中的JSON解析报错。
以上,谢谢管理员的回复。
页:
[1]