Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

今天从pagehelper.version 1.4.7 升级到 pagehelper.version2.1.0 出现的问题 #171

Open
zhouwei520 opened this issue Jan 3, 2024 · 11 comments

Comments

@zhouwei520
Copy link

今天从<pagehelper.version> 1.4.7 升级到 <pagehelper.version>2.1.0</pagehelper.version>
springboot以前的版本 没有变动

org.springframework.boot
spring-boot-starter-parent
3.0.13


重新运行出现 以下的错误信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': Bad return type
Exception Details:
Location:
com/github/pagehelper/parser/defaults/DefaultCountSqlParser.sqlToCount(Lnet/sf/jsqlparser/statement/select/Select;Ljava/lang/String;)Lnet/sf/jsqlparser/statement/select/Select; @149: areturn
Reason:
Type 'net/sf/jsqlparser/statement/select/PlainSelect' (current frame, stack[0]) is not assignable to 'net/sf/jsqlparser/statement/select/Select' (from method signature)
Current Frame:
bci: @149
flags: { }
locals: { 'com/github/pagehelper/parser/defaults/DefaultCountSqlParser', 'net/sf/jsqlparser/statement/select/Select', 'java/lang/String', 'java/util/List', 'net/sf/jsqlparser/statement/select/PlainSelect', 'net/sf/jsqlparser/statement/select/ParenthesedSelect' }
stack: { 'net/sf/jsqlparser/statement/select/PlainSelect' }
Bytecode:
0000000: bb00 2959 b700 2a4e 2dbb 002b 59bb 002c
0000010: 59bb 001f 59b7 0020 122d b600 212c b600
0000020: 2112 2eb6 0021 b600 22b7 002f b700 30b9
0000030: 0031 0200 572b c100 1599 0018 2a2b c000
0000040: 15b6 0032 9900 0d2b c000 152d b600 332b
0000050: b0bb 0015 59b7 0034 3a04 bb00 3559 b700
0000060: 363a 0519 052b b600 3719 05b2 0038 b600
0000070: 3919 0419 05b6 003a 1904 2db6 0033 2bb6
0000080: 0011 c600 1119 042b b600 11b6 003b 2b01
0000090: b600 3c19 04b0
Stackmap Table:
append_frame(@81,Object[#169])
append_frame(@147,Object[#170],Object[#171])

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290)
at cn.cws.fulimall.crm.CrmApplication.main(CrmApplication.java:34)

Caused by: java.lang.VerifyError: Bad return type
Exception Details:
Location:
com/github/pagehelper/parser/defaults/DefaultCountSqlParser.sqlToCount(Lnet/sf/jsqlparser/statement/select/Select;Ljava/lang/String;)Lnet/sf/jsqlparser/statement/select/Select; @149: areturn
Reason:
Type 'net/sf/jsqlparser/statement/select/PlainSelect' (current frame, stack[0]) is not assignable to 'net/sf/jsqlparser/statement/select/Select' (from method signature)
Current Frame:
bci: @149
flags: { }
locals: { 'com/github/pagehelper/parser/defaults/DefaultCountSqlParser', 'net/sf/jsqlparser/statement/select/Select', 'java/lang/String', 'java/util/List', 'net/sf/jsqlparser/statement/select/PlainSelect', 'net/sf/jsqlparser/statement/select/ParenthesedSelect' }
stack: { 'net/sf/jsqlparser/statement/select/PlainSelect' }
Bytecode:
0000000: bb00 2959 b700 2a4e 2dbb 002b 59bb 002c
0000010: 59bb 001f 59b7 0020 122d b600 212c b600
0000020: 2112 2eb6 0021 b600 22b7 002f b700 30b9
0000030: 0031 0200 572b c100 1599 0018 2a2b c000
0000040: 15b6 0032 9900 0d2b c000 152d b600 332b
0000050: b0bb 0015 59b7 0034 3a04 bb00 3559 b700
0000060: 363a 0519 052b b600 3719 05b2 0038 b600
0000070: 3919 0419 05b6 003a 1904 2db6 0033 2bb6
0000080: 0011 c600 1119 042b b600 11b6 003b 2b01
0000090: b600 3c19 04b0
Stackmap Table:
append_frame(@81,Object[#169])
append_frame(@147,Object[#170],Object[#171])

at com.github.pagehelper.dialect.AbstractDialect.setProperties(AbstractDialect.java:57)
at com.github.pagehelper.dialect.AbstractHelperDialect.setProperties(AbstractHelperDialect.java:233)
at com.github.pagehelper.page.PageAutoDialect.instanceDialect(PageAutoDialect.java:207)
at com.github.pagehelper.page.PageAutoDialect.setProperties(PageAutoDialect.java:352)
at com.github.pagehelper.PageHelper.setProperties(PageHelper.java:188)
at com.github.pagehelper.PageInterceptor.setProperties(PageInterceptor.java:263)
at com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration.afterPropertiesSet(PageHelperAutoConfiguration.java:65)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1817)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766)
... 16 common frames omitted

把版本将至
<pagehelper.version>2.0.0</pagehelper.version> 运行暂时没有发现问题

@abel533
Copy link
Collaborator

abel533 commented Jan 3, 2024

看一下依赖的jsqlparser是不是4.7。。如果使用4.5,可以修改依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>6.1.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>sqlparser4.5</artifactId>
    <version>6.1.0</version>
</dependency>

@zhouwei520
Copy link
Author

<dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>${pagehelper.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>jsqlparser</artifactId>
                    <groupId>com.github.jsqlparser</groupId>
                </exclusion>
            </exclusions>
        </dependency>

这样排除后 还是不行

@zhouwei520
Copy link
Author

zw
6.1 版本才会出现这个

@zhouwei520
Copy link
Author

6.0.0 版本都没有这个方法

@abel533
Copy link
Collaborator

abel533 commented Jan 8, 2024

你项目运行时依赖的jsqlparser版本是什么?

@zhouwei520
Copy link
Author

4.6的版本

@Lu-Lucifer
Copy link

同样的问题,项目里边jsqlparser是4.6的

@lsewcx
Copy link

lsewcx commented Feb 22, 2024

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.jsqlparser</groupId>
        <artifactId>jsqlparser</artifactId>
        <version>3.2</version>
    </dependency>   

这样可以换成2.1.0的版本就不行,我的是springboot2.6.13

@LSL1618
Copy link

LSL1618 commented Apr 19, 2024

@zhouwei520 我也碰到了一样的报错异常 pagehelper/Mybatis-PageHelper#814

@focuseyes360
Copy link

  1. Change pom.xml:

    com.github.pagehelper
    pagehelper-spring-boot-starter
    2.1.0


    com.github.jsqlparser
    jsqlparser
    3.2

     		<dependency>
     			<groupId>com.github.pagehelper</groupId>
     			<artifactId>pagehelper</artifactId>
     			<version>6.1.0</version>
     			<exclusions>
     				<exclusion>
     					<groupId>com.github.jsqlparser</groupId>
     					<artifactId>jsqlparser</artifactId>
     				</exclusion>
     			</exclusions>
     		</dependency>
     		<dependency>
     			<groupId>com.github.pagehelper</groupId>
     			<artifactId>sqlparser4.5</artifactId>
     			<version>6.1.0</version>
     		</dependency>
    
  2. New class file LocalSqlDialect:
    /**

  • if your database is the others,extend from the Dialect,such as MySqlDialect/PostgreSqlDialect
    */
    public class LocalSqlDialect extends MySqlDialect {

    @OverRide
    public void setProperties(Properties properties) {
    this.countSqlParser = ClassUtil.newInstance(properties.getProperty("countSqlParser"), CountSqlParser.class, properties, CountJSqlParser45::new);
    this.orderBySqlParser = ClassUtil.newInstance(properties.getProperty("orderBySqlParser"), OrderBySqlParser.class, properties, OrderByJSqlParser45::new);
    }
    }

  1. Register the instance of the new custom class in your project application main function:
    public class XxxApplication {

    public static void main(String[] args) {
    PageAutoDialect.registerDialectAlias("mysql", LocalSqlDialect.class);
    SpringApplication.run(XxxApplication .class, args);

}

  1. I test it with my database(mysql 8.2.0),it works fine. You can just try !

@LSL1618
Copy link

LSL1618 commented Jan 2, 2025

@focuseyes360 也可以这样,在application.properties配置文件中直接设置

pagehelper.countSqlParser=com.github.pagehelper.parser.CountJSqlParser45
pagehelper.orderBySqlParser=com.github.pagehelper.parser.SqlServerJSqlParser45
pagehelper.sqlServerSqlParser=com.github.pagehelper.parser.SqlServerJSqlParser45

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants