最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA與mybatis-plus不兼容問題的解決

 更新時間:2023年02月24日 10:35:04   作者:Virgil??  
本文主要介紹了JPA與mybatis-plus不兼容問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

引入mybatis-plus后,在spring-boot啟動時,JPA會使用CCJSqlParser對SQL進(jìn)行分析處理,由于@Query中的Native-SQL語法并非完全的sql,所以,會報錯

Caused by: java.lang.IllegalArgumentException: The query you provided is not a valid SQL Query!
        at org.springframework.data.jpa.repository.query.JSqlParserQueryEnhancer.detectParsedType(JSqlParserQueryEnhancer.java:95)
        at org.springframework.data.jpa.repository.query.JSqlParserQueryEnhancer.<init>(JSqlParserQueryEnhancer.java:72)
        at org.springframework.data.jpa.repository.query.QueryEnhancerFactory.forQuery(QueryEnhancerFactory.java:45)
        at org.springframework.data.jpa.repository.query.StringQuery.<init>(StringQuery.java:83)
        at org.springframework.data.jpa.repository.query.DeclaredQuery.of(DeclaredQuery.java:40)
        at org.springframework.data.jpa.repository.query.JpaQueryMethod.assertParameterNamesInAnnotatedQuery(JpaQueryMethod.java:158)
        at org.springframework.data.jpa.repository.query.JpaQueryMethod.<init>(JpaQueryMethod.java:139)
        at org.springframework.data.jpa.repository.query.DefaultJpaQueryMethodFactory.build(DefaultJpaQueryMethodFactory.java:44)
        at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:93)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:103)
        ... 66 common frames omitted
Caused by: net.sf.jsqlparser.JSQLParserException: Encountered unexpected token: "<=" <OP_MINORTHANEQUALS>
    at line 1, column 1648.
 
Was expecting one of:
 
    "&"
    ")"
    "."
    "::"

Virgil??
    "<<"
    ">>"
    "COLLATE"
    "["
    "^"
    "|"
 
        at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:190)
        at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:63)
        at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:38)
        at org.springframework.data.jpa.repository.query.JSqlParserQueryEnhancer.detectParsedType(JSqlParserQueryEnhancer.java:83)
        ... 75 common frames omitted
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "<=" <OP_MINORTHANEQUALS>
    at line 1, column 1648.
 
Was expecting one of:
 
    "&"
    ")"
    "."
    "::"
    "<<"
    ">>"
    "COLLATE"
    "["
    "^"
    "|"
 
        at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:31234)
        at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:31067)
        at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:9663)
        at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:9609)
        at net.sf.jsqlparser.parser.CCJSqlParser.XorExpression(CCJSqlParser.java:9591)
        at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:9562)
        at net.sf.jsqlparser.parser.CCJSqlParser.WhenThenSearchCondition(CCJSqlParser.java:13048)
        at net.sf.jsqlparser.parser.CCJSqlParser.CaseWhenExpression(CCJSqlParser.java:12940)
        at net.sf.jsqlparser.parser.CCJSqlParser.PrimaryExpression(CCJSqlParser.java:11112)
        at net.sf.jsqlparser.parser.CCJSqlParser.BitwiseXor(CCJSqlParser.java:10981)
        at net.sf.jsqlparser.parser.CCJSqlParser.MultiplicativeExpression(CCJSqlParser.java:10934)
        at net.sf.jsqlparser.parser.CCJSqlParser.AdditiveExpression(CCJSqlParser.java:10897)
        at net.sf.jsqlparser.parser.CCJSqlParser.BitwiseAndOr(CCJSqlParser.java:10843)

通過 JPA原代碼 分析,發(fā)現(xiàn)QueryEnhancerFactory中有一個代碼 ,會去找JSqlParser

    private static boolean isJSqlParserInClassPath() {
 
        try {
            Class.forName("net.sf.jsqlparser.parser.JSqlParser", false, QueryEnhancerFactory.class.getClassLoader());
            LOG.info("JSqlParser is in classpath. If applicable JSqlParser will be used.");
            return true;
        } catch (ClassNotFoundException e) {
            return false;
        }
    }

所以,為了不讓JPA使用JSqlParser,在SpringBoot啟動時,增加特殊處理代碼

    public static void main(String[] args) {
        try {
            QueryEnhancerFactory.forQuery(null) ;
        } catch(Exception e) {
            // just init class QueryEnhancerFactory, ignore anything
        }
 
        try {
            Field JSQLPARSER_IN_CLASSPATH = QueryEnhancerFactory.class.getDeclaredField("JSQLPARSER_IN_CLASSPATH") ;
 
            Field modifierField = Field.class.getDeclaredField("modifiers") ;
            modifierField.setAccessible(true);
            modifierField.setInt(JSQLPARSER_IN_CLASSPATH, JSQLPARSER_IN_CLASSPATH.getModifiers() & ~Modifier.FINAL);
 
            JSQLPARSER_IN_CLASSPATH.setAccessible(true);
            JSQLPARSER_IN_CLASSPATH.setBoolean(null, true);
        } catch(Exception e) {
            log.error(e.getMessage(), e) ;
        }
        SpringApplication.run(PmsApplication.class, args);
        log.info("Start Success");
    }

到此這篇關(guān)于JPA與mybatis-plus不兼容問題的解決的文章就介紹到這了,更多相關(guān)JPA與mybatis-plus不兼容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring cloud gateway工作流程原理解析

    Spring cloud gateway工作流程原理解析

    這篇文章主要介紹了Spring cloud gateway工作流程原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java代理模式實例分析

    Java代理模式實例分析

    這篇文章主要介紹了Java代理模式,結(jié)合實例形式對比分析了java代理模式的使用方法與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 使用@Value注解從配置文件中讀取數(shù)組

    使用@Value注解從配置文件中讀取數(shù)組

    這篇文章主要介紹了使用@Value注解從配置文件中讀取數(shù)組的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 通過實例解析JMM和Volatile底層原理

    通過實例解析JMM和Volatile底層原理

    這篇文章主要介紹了通過實例解析JMM和Volatile底層原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot本地磁盤映射問題

    SpringBoot本地磁盤映射問題

    這篇文章主要介紹了SpringBoot本地磁盤映射問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • SpringBoot整合Thymeleaf的方法

    SpringBoot整合Thymeleaf的方法

    這篇文章主要介紹了SpringBoot整合Thymeleaf的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下,希望能夠幫助到你
    2021-07-07
  • spring中前端明明傳了值后端卻接收不到問題解決辦法

    spring中前端明明傳了值后端卻接收不到問題解決辦法

    在學(xué)習(xí)Spring的時候遇到了一個問題,后臺一直接收不到前臺傳遞過來的參數(shù),耽誤了好長時間終于找到了原因,這篇文章主要給大家介紹了關(guān)于spring中前端明明傳了值后端卻接收不到問題的解決辦法,需要的朋友可以參考下
    2024-05-05
  • springmvc如何使用map接收參數(shù)

    springmvc如何使用map接收參數(shù)

    這篇文章主要介紹了springmvc如何使用map接收參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 用Java8 stream處理數(shù)據(jù)

    用Java8 stream處理數(shù)據(jù)

    這篇文章主要介紹了用Java8 stream處理數(shù)據(jù),Java 8 API的設(shè)計者重新提出了一個新的抽象稱為流Stream,可以讓我們以一種聲明的方式處理數(shù)據(jù),此外,數(shù)據(jù)流可以充分利用多核架構(gòu)而無需編寫多線程的一行代碼,下面我們一起來看看文章詳細(xì)介紹
    2021-11-11
  • Mybatis pagehelper分頁插件使用過程解析

    Mybatis pagehelper分頁插件使用過程解析

    這篇文章主要介紹了mybatis pagehelper分頁插件使用過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論

洛川县| 泊头市| 昌都县| 安远县| 利津县| 随州市| 梁河县| 丽江市| 罗平县| 宜兰市| 合川市| 亚东县| 瓦房店市| 同心县| 安溪县| 台前县| 西充县| 柞水县| 屏边| 江达县| 景宁| 新营市| 广西| 诸暨市| 康保县| 松滋市| 赤壁市| 临猗县| 灵武市| 海城市| 修武县| 海安县| 谢通门县| 太康县| 东山县| 古浪县| 本溪市| 万盛区| 稷山县| 莲花县| 密云县|