Git Product home page Git Product logo

base-admin's Introduction

官网

https://huanzi-qch.gitee.io/base-admin

简介

Base Admin一套简单通用的后台管理系统
这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等

技术栈

前端:layui
java后端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySql

运行效果图

仓库地址

国外:https://github.com/huanzi-qch/base-admin
国内:https://gitee.com/huanzi-qch/base-admin

前往博客查看详情

具体介绍请看我的博客《开源一套简单通用的后台管理系统》

常见问题

0、maven下载jar包长时间无反应?

原因:网络原因连不上maven仓库或其他未知原因导致IDE间接性抽风,导致无法下载联网下载jar包

解决:网络原因自行解决,如果网络没问题就不要一直傻傻的等了,重启IDE,让它重新联网下载

1、IDE编译报错,识别不到实体类的set、get方法?

原因:项目使用lombok开发,lombok会在生成class字节码文件帮我们生成set、get等方法,java文件没有set、get等方法,IDE索引不到set、get方法所以编译报错

解决:IDE安装lombok插件即可能识别到对应set、get方法,重启生效

2、数据库文件在哪?

原因:没有好好看文档,建议先好好看下博客介绍,博客文末“代码开源”处已经早有说明

解决:base_admin.sql文件在resources/static/sql下面

3、如何启动程序?

原因:对springboot项目不熟,建议先去了解一下springboot,感兴趣的可以去看我的springBoot开源项目

解决:等待IDE识别成springboot项目后,在BaseAdminApplication.java中运行main函数启动程序

4、测试账号/密码是多少? PS:dev分支环境,默认关闭验证码校验

账号/密码

sa/123456

5、如何逆向工程生成后端代码?我封装有一个工具类AutoGenerator.java用于生成单表全套后端代码

首先建好数据表,在该类中配置好数据源以及项目所在路径,在main函数的tables数组指定要生成代码表,运行main函数即可生成全套后端增删改查、分页代码

一套通用common代码,每个单表去继承从而实现这套基础代码,使用AutoGenerator.java代码自动生成一套单表的基础增、删、改、查接口,大大提高开发效率,
详情见博客介绍:https://www.cnblogs.com/huanzi-qch/p/10281773.html

2021-06-24更新:我优化了AutoGenerator.java的代码,并升级了V2.0版本的代码生成器,支持使用模板文件生成代码:AutoGeneratorPlus.java

6、如何跳过登录,直接测试接口?

场景:有的同学发现在“无需权限访问”那里配置了测试接口,但还是跳转到了登录页面,例如:/sys/sysUser/getUserById

原因:这是因为跟“权限管理”那里配置的url接口冲突了(例如:/sys/**),权限管理那里的配置优先级更高,因此还是会跳去登录页面

解决:暂时删除所有跟测试接口冲突的“权限管理”配置的url接口(例如:/sys/**,/sys/sysUser/*等)

2021-01-25更新:还是有人搞不定无需登录接口,我在项目中新增了一个OpenApi模块,以供大家参考!启动项目后,访问OpenApi测试接口:http://localhost:8888/openApi/test,即可看到效果

7、ORM框架不想用JPA,如何快速转MyBatis-Plus?

JPA、MyBatis-Plus我都有进行封装,编码风格高度统一,都是单表继承基础通用的代码,有代码自动生成工具,本项目用的就是JPA的封装,快速切换可看之前的博客

MP:SpringBoot系列——MyBatis-Plus整合封装(https://www.cnblogs.com/huanzi-qch/p/13561164.html)
JPA:SpringBoot系列——Spring-Data-JPA(究极进化版) 自动生成单表基础增、删、改、查接口(https://www.cnblogs.com/huanzi-qch/p/10281773.html)

8、我想升级成前后端分离项目,麻烦吗?应当如何下手?

难度肯定还是有的,如何你对这个项目比较熟悉,相信你已早有思路,如果没有可以参考下面的博客文章

springboot+spring security +oauth2.0 demo搭建(password模式)(认证授权端与资源服务端分离的形式)(https://www.cnblogs.com/hetutu-5238/p/10022963.html)
GitHub地址(https://github.com/hetutu5238/zmc_security_oauth2)

另外,我封装开源了一套极简的前后端分离项目脚手架:Fast Scaffold,包含一个portal前端、一个admin后端,可用于快速的搭建前后端分离项目进行二次开发
详情请看博客:https://www.cnblogs.com/huanzi-qch/p/13933461.html
GitHub地址:https://github.com/huanzi-qch/fast-scaffold

9、运行jar包,启动失败?

十有八九是打的jar包有问题,参考博客重新打包,SpringBoot系列——jar包与war包的部署:https://www.cnblogs.com/huanzi-qch/p/9948060.html

发现还是有很多同学打的包不对,我已经修改了pom.xml的打包配置,直接指定了打包生成路径:package,
直接运行maven打包命令:package,就会在pom.xml的同级目录下生成package文件夹,打的jar包就在文件夹里面
另外说一下:
../package pom.xml文件的上一层目录下面的package
/package C盘下面的package文件夹
package pom.xml文件的同级目录下面的package

AD广告位 (长期招租,如有需要请私信)

【基塔后台】免费后台管理系统,低代码快速搭建管理后台

【阿里云】阿里云最全的优惠活动聚集地!
【腾讯云】腾讯云当前最新优惠活动专区!

QQ群

有事请加群,有问题进群大家一起交流!

捐献

相应的资金支持能更好的持续项目的维护和开发,如果喜欢这个项目,请随意打赏!

支付宝 微信

base-admin's People

Contributors

huanzi-qch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

base-admin's Issues

登录问题!

博主您好,我使用演示的账户登录,一直显示密码错误。

您好,大哥,找你太难了

我好不容易用咱的系统,然后单独改了一个多表关联的地方,用的自定义sql,现在又出现了前后台数据交互时候有个加解密,这个是需要我怎么配置呀,要哭了,我整了两天了

打包出来的jar包运行不起来,报无法找到主清单错误

将下面注释掉修改成如下,jar包可以正常了,不知道有啥区别。。。。
    <!--<plugin>-->
        <!--    <groupId>org.springframework.boot</groupId>-->
        <!--    <artifactId>spring-boot-maven-plugin</artifactId>-->
        <!--    <configuration>-->
        <!--        <finalName>${project.artifactId}</finalName>-->
        <!--        <outputDirectory>package</outputDirectory>-->
        <!--    </configuration>-->
        <!--</plugin>-->

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <!--在这里修改版本-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.4.3</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.1.0</version>
        </plugin>

code:10002,errorMsg:【Api Security】解密异常!

使用 sa/123456 登录,提示解密异常

cn.huanzi.qch.baseadmin.exceptionhandler.ServiceException: {code:10002,errorMsg:【Api Security】解密异常!}
	at cn.huanzi.qch.baseadmin.util.ApiSecurityUtil.decrypt(ApiSecurityUtil.java:41)
	at cn.huanzi.qch.baseadmin.config.security.CaptchaFilterConfig.doFilter(CaptchaFilterConfig.java:127)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:833)

很多依赖包没有写到pom文件中?

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

加解密问题

common.js文件中rsaUtil.encrypt()方法中return rsaUtil.thisKeyPair.encrypt(JSON.stringify(plaintext)); 修改为rsaUtil.thisKeyPair.encrypt(plaintext); 则不会造成RSA解密多一个双引号。双引号是因为JSON.stringify()方法造成的。
请及时修订前后端以及注释,以免给其他同学造成误解。

并发多人登录控制在Session超时情况下会误判

首先感谢大佬分享,学到了很多东西!试着跑跑,发现admin用户设置不允许多人登录,然后设置session超时阈值为1分钟,登录系统后静止超过一分钟,刷新页面自动跳到登录页,然后重新登录,会提示不允许多人登录。

请大佬有空看看哦~~

File upload Vulnerability

The system uploads the file interface and calls the upload() function with security risks, which causes attackers to upload files with arbitrary file suffixes (such as webshell). Therefore, this function has a large security risk.

Specific method path: cn.huanzi.qch.baseadmin.sys.sysfile.controller.SysFileController#upload

4

You can fix the question by limiting the suffix of uploaded files

Unable to start embedded Tomcat

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203)
at cn.huanzi.qch.baseadmin.BaseAdminApplication.main(BaseAdminApplication.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:124)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.(TomcatWebServer.java:86)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:416)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:180)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153)
... 13 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamicallyUrlInterceptor' defined in class path resource [cn/huanzi/qch/baseadmin/config/security/SecurityConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.huanzi.qch.baseadmin.config.security.DynamicallyUrlInterceptor]: Factory method 'dynamicallyUrlInterceptor' threw exception; nested exception is java.lang.ClassCastException: org.hibernate.query.sqm.tree.predicate.SqmBooleanExpressionPredicate cannot be cast to org.hibernate.sql.ast.tree.predicate.Predicate
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:174)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:169)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAdaptableBeans(ServletContextInitializerBeans.java:154)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.(ServletContextInitializerBeans.java:86)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:253)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:227)
at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5132)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:932)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:456)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:105)
... 18 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.huanzi.qch.baseadmin.config.security.DynamicallyUrlInterceptor]: Factory method 'dynamicallyUrlInterceptor' threw exception; nested exception is java.lang.ClassCastException: org.hibernate.query.sqm.tree.predicate.SqmBooleanExpressionPredicate cannot be cast to org.hibernate.sql.ast.tree.predicate.Predicate
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
... 59 common frames omitted
Caused by: java.lang.ClassCastException: org.hibernate.query.sqm.tree.predicate.SqmBooleanExpressionPredicate cannot be cast to org.hibernate.sql.ast.tree.predicate.Predicate
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:423)
at org.hibernate.query.sqm.sql.internal.StandardSqmSelectTranslator.visitSelectStatement(StandardSqmSelectTranslator.java:185)
at org.hibernate.query.sqm.sql.internal.StandardSqmSelectTranslator.translate(StandardSqmSelectTranslator.java:127)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:226)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.resolveCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:193)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:153)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:437)
at org.hibernate.query.spi.AbstractQuery.list(AbstractQuery.java:1356)
at org.hibernate.query.Query.getResultList(Query.java:136)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:484)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:359)
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:200)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:644)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:608)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$invoke$3(RepositoryFactorySupport.java:595)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:595)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:144)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$ExposeRepositoryInvocationInterceptor.invoke(CrudMethodMetadataPostProcessor.java:364)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy115.findAll(Unknown Source)
at cn.huanzi.qch.baseadmin.common.service.CommonServiceImpl.list(CommonServiceImpl.java:63)
at cn.huanzi.qch.baseadmin.common.service.CommonServiceImpl$$FastClassBySpringCGLIB$$7f64bf8.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at cn.huanzi.qch.baseadmin.sys.sysauthority.service.SysAuthorityServiceImpl$$EnhancerBySpringCGLIB$$62d7c25f.list()
at cn.huanzi.qch.baseadmin.config.security.SecurityConfig.dynamicallyUrlInterceptor(SecurityConfig.java:128)
at cn.huanzi.qch.baseadmin.config.security.SecurityConfig$$EnhancerBySpringCGLIB$$4e20a307.CGLIB$dynamicallyUrlInterceptor$3()
at cn.huanzi.qch.baseadmin.config.security.SecurityConfig$$EnhancerBySpringCGLIB$$4e20a307$$FastClassBySpringCGLIB$$c7289fd3.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
at cn.huanzi.qch.baseadmin.config.security.SecurityConfig$$EnhancerBySpringCGLIB$$4e20a307.dynamicallyUrlInterceptor()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 60 common frames omitted

bug

CaptchaFilterConfig this class,if you alrealy use PrintWriter,and you not use return keyword,otherwise,console will create error,please look!

SqlUtil sql拼接错误

你好,我在使用SqlUtil拼接sql时
发现当实体类的Integer加入@like
在SqlUtil中发现第144行
sql.append(" and ").append(column).append(" = '").append(SqlUtil.escapeSql( (String) fieldValue)).append("'");
中的 (String) fieldValue
Integer转String错误
我将其改成了String.valueOf(fieldValue)
成功

另外,序列化的实体一般要有serialVersionUID,可以加在忽略拼接的字段
以上
最后感谢开发者的开源

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.