当前使用版本(必填,否则不予处理)
3.4.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
达梦数据库支持mysql,oracle分页,源码默认是用的oracle方言,如果是mysql怎么办?
重现步骤(如果有就写完整)
连接信息一样
- 使用Oracle方言, 报错信息如下:有歧义的列名[ROW_ID]
继承PaginationInnerInterceptor 重写 findIDialect 方法 2. 使用Mysql方言,第一次调用Mysql方言,后续又调用了一次Oracle方言,报方案1错误。
报错信息
Step1 使用Oracle方言时(源码默认) org.springframework.dao.DataIntegrityViolationException:
Error querying database. Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
有歧义的列名[ROW_ID]
The error occurred while executing a query
SQL: SELECT * FROM ( SELECT TMP., ROWNUM ROW_ID FROM ( SELECT * FROM ( SELECT TMP., ROWNUM ROW_ID FROM ( SELECT id,page_name FROM test.page_test ) TMP WHERE ROWNUM <=?) WHERE ROW_ID > ? ) TMP WHERE ROWNUM <=?) WHERE ROW_ID > ?
Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
有歧义的列名[ROW_ID] ; 第1 行附近出现错误: 有歧义的列名[ROW_ID]; nested exception is dm.jdbc.driver.DMException: 第1 行附近出现错误: 有歧义的列名[ROW_ID]
使用Mysql方言时, 初次调用Mysql方言,后续调用Oracle方言,报之上错误。
Comment From: qmdx
参考 https://github.com/baomidou/mybatis-plus/tree/3.0/mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/dialects 实现 IDialect 然后注入分页插件