halo-dev / halo

强大易用的开源建站工具。
https://www.halo.run
GNU General Public License v3.0
34.02k stars 9.71k forks source link

文章批量删除接口异常 javax.persistence.TransactionRequiredException #1714

Closed ruibaby closed 2 years ago

ruibaby commented 2 years ago

是什么版本出现了此问题?

1.5.0-alpha.2

使用的什么数据库?

H2

使用的哪种方式部署?

Fat Jar

在线站点地址

https://halo.run

发生了什么?

Request URL: http://localhost:8090/api/admin/posts Request Method: DELETE Request Payload:[39,42,27,21,11]

相关日志输出

2022-03-07 17:15:21.613 DEBUG 38357 --- [tp1299393095-73] run.halo.app.filter.LogFilter            : Starting url: [http://localhost:8090/api/admin/posts], method: [DELETE], ip: [[0:0:0:0:0:0:0:1]]
2022-03-07 17:15:21.615 DEBUG 38357 --- [tp1299393095-73] r.h.a.s.f.AbstractAuthenticationFilter   : Got access key from parameter: [ott: null]
2022-03-07 17:15:21.615 DEBUG 38357 --- [tp1299393095-73] r.h.a.s.f.AbstractAuthenticationFilter   : Got access key from header: [ADMIN-Authorization: 97ff842b9d1a4b30aa88e8d3183689da]
Hibernate: select user0_.id as id1_18_0_, user0_.create_time as create_t2_18_0_, user0_.update_time as update_t3_18_0_, user0_.avatar as avatar4_18_0_, user0_.description as descript5_18_0_, user0_.email as email6_18_0_, user0_.expire_time as expire_t7_18_0_, user0_.mfa_key as mfa_key8_18_0_, user0_.mfa_type as mfa_type9_18_0_, user0_.nickname as nicknam10_18_0_, user0_.password as passwor11_18_0_, user0_.username as usernam12_18_0_ from users user0_ where user0_.id=?
2022-03-07 17:15:21.617 DEBUG 38357 --- [tp1299393095-73] r.h.a.c.HaloRequestMappingHandlerMapping : Looking path: [/api/admin/posts]
2022-03-07 17:15:21.617 DEBUG 38357 --- [tp1299393095-73] r.h.a.c.HaloRequestMappingHandlerMapping : Mapped to run.halo.app.controller.admin.api.PostController#deletePermanentlyInBatch(List)
2022-03-07 17:15:21.619 DEBUG 38357 --- [tp1299393095-73] run.halo.app.core.ControllerLogAop       : Request URL: [http://localhost:8090/api/admin/posts], URI: [/api/admin/posts], Request Method: [DELETE], IP: [[0:0:0:0:0:0:0:1]]
2022-03-07 17:15:21.619 DEBUG 38357 --- [tp1299393095-73] run.halo.app.core.ControllerLogAop       : PostController.deletePermanentlyInBatch Parameters: [[[39,42,27,21,11]]]
2022-03-07 17:15:21.619 DEBUG 38357 --- [tp1299393095-73] r.halo.app.service.impl.PostServiceImpl  : Removing post: [39]
Hibernate: select posttag0_.id as id1_14_, posttag0_.create_time as create_t2_14_, posttag0_.update_time as update_t3_14_, posttag0_.post_id as post_id4_14_, posttag0_.tag_id as tag_id5_14_ from post_tags posttag0_ where posttag0_.post_id=?
2022-03-07 17:15:21.627 DEBUG 38357 --- [tp1299393095-73] r.halo.app.service.impl.PostServiceImpl  : Removed post tags: [[]]
Hibernate: select postcatego0_.id as id1_13_, postcatego0_.create_time as create_t2_13_, postcatego0_.update_time as update_t3_13_, postcatego0_.category_id as category4_13_, postcatego0_.post_id as post_id5_13_ from post_categories postcatego0_ where postcatego0_.post_id=?
2022-03-07 17:15:21.631 DEBUG 38357 --- [tp1299393095-73] r.halo.app.service.impl.PostServiceImpl  : Removed post categories: [[]]
Hibernate: select postmeta0_.id as id2_10_, postmeta0_.create_time as create_t3_10_, postmeta0_.update_time as update_t4_10_, postmeta0_.meta_key as meta_key5_10_, postmeta0_.post_id as post_id6_10_, postmeta0_.meta_value as meta_val7_10_ from metas postmeta0_ where postmeta0_.type=0 and postmeta0_.post_id=?
2022-03-07 17:15:21.632 DEBUG 38357 --- [tp1299393095-73] r.halo.app.service.impl.PostServiceImpl  : Removed post metas: [[]]
Hibernate: select postcommen0_.id as id2_3_, postcommen0_.create_time as create_t3_3_, postcommen0_.update_time as update_t4_3_, postcommen0_.allow_notification as allow_no5_3_, postcommen0_.author as author6_3_, postcommen0_.author_url as author_u7_3_, postcommen0_.content as content8_3_, postcommen0_.email as email9_3_, postcommen0_.gravatar_md5 as gravata10_3_, postcommen0_.ip_address as ip_addr11_3_, postcommen0_.is_admin as is_admi12_3_, postcommen0_.parent_id as parent_13_3_, postcommen0_.post_id as post_id14_3_, postcommen0_.status as status15_3_, postcommen0_.top_priority as top_pri16_3_, postcommen0_.user_agent as user_ag17_3_ from comments postcommen0_ where postcommen0_.type=0 and postcommen0_.post_id=?
2022-03-07 17:15:21.638 ERROR 38357 --- [tp1299393095-73] r.h.app.core.ControllerExceptionHandler  : Captured an exception:

org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
    at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:403) ~[spring-orm-5.3.16.jar:5.3.16]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.16.jar:5.3.16]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.16.jar:5.3.16]
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.16.jar:5.3.16]
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.16.jar:5.3.16]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.5.9.jar:2.5.9]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.16.jar:5.3.16]
    at com.sun.proxy.$Proxy177.deleteByPostId(Unknown Source) ~[na:na]
    at run.halo.app.service.impl.BaseCommentServiceImpl.removeByPostId(BaseCommentServiceImpl.java:433) ~[classes/:na]
    at run.halo.app.service.impl.BaseCommentServiceImpl$$FastClassBySpringCGLIB$$a47714c0.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) ~[spring-aop-5.3.16.jar:5.3.16]
    at run.halo.app.service.impl.PostCommentServiceImpl$$EnhancerBySpringCGLIB$$7c6272be.removeByPostId(<generated>) ~[classes/:na]
    at run.halo.app.service.impl.PostServiceImpl.removeById(PostServiceImpl.java:513) ~[classes/:na]
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
    at run.halo.app.service.impl.PostServiceImpl.removeByIds(PostServiceImpl.java:287) ~[classes/:na]
    at run.halo.app.service.impl.PostServiceImpl$$FastClassBySpringCGLIB$$f48dfa5c.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) ~[spring-aop-5.3.16.jar:5.3.16]
    at run.halo.app.service.impl.PostServiceImpl$$EnhancerBySpringCGLIB$$b792ef85.removeByIds(<generated>) ~[classes/:na]
    at run.halo.app.controller.admin.api.PostController.deletePermanentlyInBatch(PostController.java:184) ~[classes/:na]
    at run.halo.app.controller.admin.api.PostController$$FastClassBySpringCGLIB$$2dfdeb65.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) ~[spring-aop-5.3.16.jar:5.3.16]
    at run.halo.app.core.ControllerLogAop.controller(ControllerLogAop.java:67) ~[classes/:na]
    at jdk.internal.reflect.GeneratedMethodAccessor246.invoke(Unknown Source) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.3.16.jar:5.3.16]
    at run.halo.app.controller.admin.api.PostController$$EnhancerBySpringCGLIB$$a3e0f42d.deletePermanentlyInBatch(<generated>) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.16.jar:5.3.16]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:523) ~[jakarta.servlet-api-4.0.4.jar:4.0.4]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.16.jar:5.3.16]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) ~[jakarta.servlet-api-4.0.4.jar:4.0.4]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:230) ~[websocket-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at run.halo.app.security.filter.AdminAuthenticationFilter.doAuthenticate(AdminAuthenticationFilter.java:120) ~[classes/:na]
    at run.halo.app.security.filter.AbstractAuthenticationFilter.doFilterInternal(AbstractAuthenticationFilter.java:229) ~[classes/:na]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.16.jar:5.3.16]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.16.jar:5.3.16]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at run.halo.app.filter.CorsFilter.doFilter(CorsFilter.java:53) ~[classes/:na]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) ~[spring-boot-actuator-2.5.10.jar:2.5.10]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.16.jar:5.3.16]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at run.halo.app.filter.LogFilter.doFilterInternal(LogFilter.java:40) ~[classes/:na]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16]
    at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
    at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:295) ~[spring-orm-5.3.16.jar:5.3.16]
    at com.sun.proxy.$Proxy145.remove(Unknown Source) ~[na:na]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$DeleteExecution.doExecute(JpaQueryExecution.java:275) ~[spring-data-jpa-2.5.9.jar:2.5.9]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:88) ~[spring-data-jpa-2.5.9.jar:2.5.9]
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155) ~[spring-data-jpa-2.5.9.jar:2.5.9]
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143) ~[spring-data-jpa-2.5.9.jar:2.5.9]
    at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.5.9.jar:2.5.9]
    at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.5.9.jar:2.5.9]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:159) ~[spring-data-commons-2.5.9.jar:2.5.9]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:138) ~[spring-data-commons-2.5.9.jar:2.5.9]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.5.9.jar:2.5.9]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.16.jar:5.3.16]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.16.jar:5.3.16]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.16.jar:5.3.16]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.16.jar:5.3.16]
    ... 134 common frames omitted

2022-03-07 17:15:21.640  WARN 38357 --- [tp1299393095-73] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call]
2022-03-07 17:15:21.640 DEBUG 38357 --- [tp1299393095-73] run.halo.app.filter.LogFilter            : Ending   url: [http://localhost:8090/api/admin/posts], method: [DELETE], ip: [[0:0:0:0:0:0:0:1]], status: [500], usage: [27] ms
2022-03-07 17:15:21.661 DEBUG 38357 --- [tp1299393095-25] run.halo.app.filter.LogFilter            : Starting url: [http://localhost:8090/api/admin/posts], method: [GET], ip: [[0:0:0:0:0:0:0:1]]
2022-03-07 17:15:21.661 DEBUG 38357 --- [tp1299393095-25] r.h.a.s.f.AbstractAuthenticationFilter   : Got access key from parameter: [ott: null]
2022-03-07 17:15:21.661 DEBUG 38357 --- [tp1299393095-25] r.h.a.s.f.AbstractAuthenticationFilter   : Got access key from header: [ADMIN-Authorization: 97ff842b9d1a4b30aa88e8d3183689da]
Hibernate: select user0_.id as id1_18_0_, user0_.create_time as create_t2_18_0_, user0_.update_time as update_t3_18_0_, user0_.avatar as avatar4_18_0_, user0_.description as descript5_18_0_, user0_.email as email6_18_0_, user0_.expire_time as expire_t7_18_0_, user0_.mfa_key as mfa_key8_18_0_, user0_.mfa_type as mfa_type9_18_0_, user0_.nickname as nicknam10_18_0_, user0_.password as passwor11_18_0_, user0_.username as usernam12_18_0_ from users user0_ where user0_.id=?
2022-03-07 17:15:21.662 DEBUG 38357 --- [tp1299393095-25] r.h.a.c.HaloRequestMappingHandlerMapping : Looking path: [/api/admin/posts]
2022-03-07 17:15:21.662 DEBUG 38357 --- [tp1299393095-25] r.h.a.c.HaloRequestMappingHandlerMapping : Mapped to run.halo.app.controller.admin.api.PostController#pageBy(Pageable, PostQuery, Boolean)
2022-03-07 17:15:21.663 DEBUG 38357 --- [tp1299393095-25] run.halo.app.core.ControllerLogAop       : Request URL: [http://localhost:8090/api/admin/posts], URI: [/api/admin/posts], Request Method: [GET], IP: [[0:0:0:0:0:0:0:1]]
2022-03-07 17:15:21.663 DEBUG 38357 --- [tp1299393095-25] run.halo.app.core.ControllerLogAop       : PostController.pageBy Parameters: [[{"sort":{"empty":false,"sorted":true,"unsorted":false},"offset":0,"pageNumber":0,"pageSize":5,"unpaged":false,"paged":true},{"keyword":null,"status":null,"statuses":["RECYCLE"],"categoryId":null},true]]
Hibernate: select post0_.id as id2_15_, post0_.create_time as create_t3_15_, post0_.update_time as update_t4_15_, post0_.disallow_comment as disallow5_15_, post0_.edit_time as edit_tim6_15_, post0_.editor_type as editor_t7_15_, post0_.format_content as format_c8_15_, post0_.likes as likes9_15_, post0_.meta_description as meta_de10_15_, post0_.meta_keywords as meta_ke11_15_, post0_.original_content as origina12_15_, post0_.password as passwor13_15_, post0_.slug as slug14_15_, post0_.status as status15_15_, post0_.summary as summary16_15_, post0_.template as templat17_15_, post0_.thumbnail as thumbna18_15_, post0_.title as title19_15_, post0_.top_priority as top_pri20_15_, post0_.url as url21_15_, post0_.version as version22_15_, post0_.visits as visits23_15_, post0_.word_count as word_co24_15_ from posts post0_ where post0_.type=0 and (post0_.status in (?)) order by post0_.top_priority desc, post0_.create_time desc limit ?
Hibernate: select count(post0_.id) as col_0_0_ from posts post0_ where post0_.type=0 and (post0_.status in (?))
Hibernate: select posttag0_.id as id1_14_, posttag0_.create_time as create_t2_14_, posttag0_.update_time as update_t3_14_, posttag0_.post_id as post_id4_14_, posttag0_.tag_id as tag_id5_14_ from post_tags posttag0_ where posttag0_.post_id in (? , ? , ? , ? , ?)
Hibernate: select tag0_.id as id1_16_, tag0_.create_time as create_t2_16_, tag0_.update_time as update_t3_16_, tag0_.color as color4_16_, tag0_.name as name5_16_, tag0_.slug as slug6_16_, tag0_.slug_name as slug_nam7_16_, tag0_.thumbnail as thumbnai8_16_ from tags tag0_ where tag0_.id in (? , ? , ? , ? , ? , ? , ? , ?)
Hibernate: select postcatego0_.id as id1_13_, postcatego0_.create_time as create_t2_13_, postcatego0_.update_time as update_t3_13_, postcatego0_.category_id as category4_13_, postcatego0_.post_id as post_id5_13_ from post_categories postcatego0_ where postcatego0_.post_id in (? , ? , ? , ? , ?)
Hibernate: select category0_.id as id1_1_, category0_.create_time as create_t2_1_, category0_.update_time as update_t3_1_, category0_.description as descript4_1_, category0_.name as name5_1_, category0_.parent_id as parent_i6_1_, category0_.password as password7_1_, category0_.priority as priority8_1_, category0_.slug as slug9_1_, category0_.slug_name as slug_na10_1_, category0_.thumbnail as thumbna11_1_ from categories category0_ where category0_.id in (? , ? , ?)
Hibernate: select count(postcommen0_.id) as col_0_0_, postcommen0_.post_id as col_1_0_ from comments postcommen0_ where postcommen0_.type=0 and postcommen0_.status=? and (postcommen0_.post_id in (? , ? , ? , ? , ?)) group by postcommen0_.post_id
Hibernate: select postmeta0_.id as id2_10_, postmeta0_.create_time as create_t3_10_, postmeta0_.update_time as update_t4_10_, postmeta0_.meta_key as meta_key5_10_, postmeta0_.post_id as post_id6_10_, postmeta0_.meta_value as meta_val7_10_ from metas postmeta0_ where postmeta0_.type=0 and (postmeta0_.post_id in (? , ? , ? , ? , ?))
Hibernate: select contentpat0_.id as id1_4_, contentpat0_.create_time as create_t2_4_, contentpat0_.update_time as update_t3_4_, contentpat0_.content_diff as content_4_4_, contentpat0_.original_content_diff as original5_4_, contentpat0_.post_id as post_id6_4_, contentpat0_.publish_time as publish_7_4_, contentpat0_.source_id as source_i8_4_, contentpat0_.status as status9_4_, contentpat0_.version as version10_4_ from content_patch_logs contentpat0_ where contentpat0_.post_id=? and contentpat0_.status=? order by contentpat0_.version desc limit ?
Hibernate: select contentpat0_.id as id1_4_, contentpat0_.create_time as create_t2_4_, contentpat0_.update_time as update_t3_4_, contentpat0_.content_diff as content_4_4_, contentpat0_.original_content_diff as original5_4_, contentpat0_.post_id as post_id6_4_, contentpat0_.publish_time as publish_7_4_, contentpat0_.source_id as source_i8_4_, contentpat0_.status as status9_4_, contentpat0_.version as version10_4_ from content_patch_logs contentpat0_ where contentpat0_.post_id=? and contentpat0_.status=? order by contentpat0_.version desc limit ?
Hibernate: select contentpat0_.id as id1_4_, contentpat0_.create_time as create_t2_4_, contentpat0_.update_time as update_t3_4_, contentpat0_.content_diff as content_4_4_, contentpat0_.original_content_diff as original5_4_, contentpat0_.post_id as post_id6_4_, contentpat0_.publish_time as publish_7_4_, contentpat0_.source_id as source_i8_4_, contentpat0_.status as status9_4_, contentpat0_.version as version10_4_ from content_patch_logs contentpat0_ where contentpat0_.post_id=? and contentpat0_.status=? order by contentpat0_.version desc limit ?
Hibernate: select contentpat0_.id as id1_4_, contentpat0_.create_time as create_t2_4_, contentpat0_.update_time as update_t3_4_, contentpat0_.content_diff as content_4_4_, contentpat0_.original_content_diff as original5_4_, contentpat0_.post_id as post_id6_4_, contentpat0_.publish_time as publish_7_4_, contentpat0_.source_id as source_i8_4_, contentpat0_.status as status9_4_, contentpat0_.version as version10_4_ from content_patch_logs contentpat0_ where contentpat0_.post_id=? and contentpat0_.status=? order by contentpat0_.version desc limit ?
Hibernate: select contentpat0_.id as id1_4_, contentpat0_.create_time as create_t2_4_, contentpat0_.update_time as update_t3_4_, contentpat0_.content_diff as content_4_4_, contentpat0_.original_content_diff as original5_4_, contentpat0_.post_id as post_id6_4_, contentpat0_.publish_time as publish_7_4_, contentpat0_.source_id as source_i8_4_, contentpat0_.status as status9_4_, contentpat0_.version as version10_4_ from content_patch_logs contentpat0_ where contentpat0_.post_id=? and contentpat0_.status=? order by contentpat0_.version desc limit ?
2022-03-07 17:15:21.674 DEBUG 38357 --- [tp1299393095-25] run.halo.app.core.ControllerLogAop       : PostController.pageBy Response: [{"content":[{"id":39,"title":"Halo博客系统-Docker版","status":"RECYCLE","slug":"halo-docker","editorType":"MARKDOWN","updateTime":1593963036614,"createTime":1539867606621,"editTime":1583502056186,"metaKeywords":"","metaDescription":"","fullPath":"http://localhost:8090/archives/halo-docker.html","summary":"好消息,Halo现已加入Docker自动构建套餐。鉴于之前有很多对Java不是很熟悉的人想要部署Halo而又问题重重,于是乎,在多次调教下,Halo现在已经自动在DockerHub构建了。废话少说,先上图使用方法安装Docker安装Docker有很多方式,按照你系统环境来安装吧,具体教程请看:Doc","thumbnail":"/upload/2018/9/image-153986743963920181018205745496.png","visits":7571,"disallowComment":false,"password":"","template":"","topPriority":0,"likes":0,"wordCount":0,"inProgress":false,"commentCount":17,"tags":[],"categories":[],"metas":{},"topped":false},{"id":42,"title":"Spring Boot另类的打包方式","status":"RECYCLE","slug":"springboot-package","editorType":"MARKDOWN","updateTime":1593962908685,"createTime":1537871856021,"editTime":1557420231553,"metaKeywords":"","metaDescription":"","fullPath":"http://localhost:8090/archives/springboot-package.html","summary":"这一篇是我很久之前发在头条上的,今天转过来。SpringBoot在近来是非常受开发者欢迎的,简化了配置方式,不需要再配置繁琐的xml,内嵌web容器等等。相对于SSM,本人更喜欢使用SpringBoot开发Web项目。总所周知,SpringBoot提供了两种打包方式,即Jar和War。前者内置了we","thumbnail":"","visits":4621,"disallowComment":false,"password":"","template":"","topPriority":0,"likes":0,"wordCount":0,"inProgress":false,"commentCount":15,"tags":[{"id":2,"name":"Java","slug":"java","color":"#cfd3d7","thumbnail":"","createTime":1557419916655,"fullPath":"http://localhost:8090/tags/java.html"},{"id":3,"name":"SpringBoot","slug":"springboot","color":"#cfd3d7","thumbnail":"","createTime":1557419924181,"fullPath":"http://localhost:8090/tags/springboot.html"},{"id":6,"name":"maven","slug":"maven","color":"#cfd3d7","thumbnail":"","createTime":1557419937555,"fullPath":"http://localhost:8090/tags/maven.html"}],"categories":[{"id":2,"name":"学习记录","slug":"study-notes","description":"","thumbnail":"https://cdn.ryanc.cc/img/blog/thumbnails/2af74b43c3dc5b2015ac495c6b0a0bdf.jpg","parentId":0,"password":null,"createTime":1557419864928,"fullPath":"http://localhost:8090/categories/study-notes.html","priority":0}],"metas":{},"topped":false},{"id":27,"title":"来深圳一月后有感","status":"RECYCLE","slug":"lai-shen-zhen-yi-yue-hou-you-gan","editorType":"MARKDOWN","updateTime":1593962997539,"createTime":1537765424878,"editTime":1562694402541,"metaKeywords":"","metaDescription":"","fullPath":"http://localhost:8090/archives/lai-shen-zhen-yi-yue-hou-you-gan.html","summary":"来深圳也有一个多月了,也慢慢习惯这边的生活了,遂撰文记录一下这难忘的一月。难忘的第一天还是第一次一个人出远门,父母担心我的安全,所以坚持让我坐飞机过来,不让我坐火车(还没有做过火车)。于是乎买了凌晨5点的特价飞机票,由于第一次坐飞机怕没经验导致误机,所以我两点多就到了机场(一夜没睡),早早的把登机牌","thumbnail":"","visits":4314,"disallowComment":false,"password":"","template":"","topPriority":0,"likes":0,"wordCount":0,"inProgress":false,"commentCount":31,"tags":[{"id":17,"name":"生活","slug":"life","color":"#cfd3d7","thumbnail":"","createTime":1557420036712,"fullPath":"http://localhost:8090/tags/life.html"},{"id":18,"name":"感悟","slug":"feeling","color":"#cfd3d7","thumbnail":"","createTime":1557420045430,"fullPath":"http://localhost:8090/tags/feeling.html"}],"categories":[{"id":4,"name":"日志","slug":"notes","description":"","thumbnail":"https://cdn.ryanc.cc/img/blog/thumbnails/bd603f0a8e74c69c9c227e0d2eec4394.jpeg","parentId":0,"password":null,"createTime":1557419887127,"fullPath":"http://localhost:8090/categories/notes.html","priority":0}],"metas":{},"topped":false},{"id":21,"title":"Halo-部署教程","status":"RECYCLE","slug":"halo-run-with-git-maven","editorType":"MARKDOWN","updateTime":1593963043048,"createTime":1532326200000,"editTime":1583502034823,"metaKeywords":"","metaDescription":"","fullPath":"http://localhost:8090/archives/halo-run-with-git-maven.html","summary":"11月22号更新安装视频教程环境要求JDK1.8以上。Maven3.x。数据库MySQL5.5以上MariaDB或者直接使用H2Database,免安装。Git再次声明,不需要单独安装Tomcat之类的web容器。需要注意的是:如果使用一键安装脚本(后面会讲到),那么你只需要安装数据库即可(如果使用","thumbnail":"","visits":12493,"disallowComment":false,"password":"","template":"","topPriority":0,"likes":0,"wordCount":0,"inProgress":false,"commentCount":62,"tags":[{"id":1,"name":"Halo","slug":"halo","color":"#cfd3d7","thumbnail":"","createTime":1557419905090,"fullPath":"http://localhost:8090/tags/halo.html"},{"id":2,"name":"Java","slug":"java","color":"#cfd3d7","thumbnail":"","createTime":1557419916655,"fullPath":"http://localhost:8090/tags/java.html"},{"id":3,"name":"SpringBoot","slug":"springboot","color":"#cfd3d7","thumbnail":"","createTime":1557419924181,"fullPath":"http://localhost:8090/tags/springboot.html"},{"id":6,"name":"maven","slug":"maven","color":"#cfd3d7","thumbnail":"","createTime":1557419937555,"fullPath":"http://localhost:8090/tags/maven.html"}],"categories":[{"id":38,"name":"关于 Halo","slug":"about-halo","description":"","thumbnail":"","parentId":0,"password":null,"createTime":1583501992536,"fullPath":"http://localhost:8090/categories/about-halo.html","priority":0}],"metas":{},"topped":false},{"id":11,"title":"Halo-自助添加HTML静态页面","status":"RECYCLE","slug":"halo-add-html-page","editorType":"MARKDOWN","updateTime":1593963046750,"createTime":1529815978066,"editTime":1583502041684,"metaKeywords":"","metaDescription":"","fullPath":"http://localhost:8090/archives/halo-add-html-page.html","summary":"昨天有人问我怎么在Halo添加HTML静态页面,开始想的是把静态页面放到resources/static目录下,这样略麻烦。后面想了想,可以通过主题的方式来上传静态页面,非常方便。实现原理Halo给resources/templates/themes添加了资源映射,所以访问themes目录的资源只需","thumbnail":"","visits":3287,"disallowComment":false,"password":"","template":"","topPriority":0,"likes":0,"wordCount":0,"inProgress":false,"commentCount":15,"tags":[{"id":1,"name":"Halo","slug":"halo","color":"#cfd3d7","thumbnail":"","createTime":1557419905090,"fullPath":"http://localhost:8090/tags/halo.html"},{"id":4,"name":"css","slug":"css","color":"#cfd3d7","thumbnail":"","createTime":1557419928421,"fullPath":"http://localhost:8090/tags/css.html"},{"id":15,"name":"HTML","slug":"html","color":"#cfd3d7","thumbnail":"","createTime":1557420016467,"fullPath":"http://localhost:8090/tags/html.html"}],"categories":[{"id":38,"name":"关于 Halo","slug":"about-halo","description":"","thumbnail":"","parentId":0,"password":null,"createTime":1583501992536,"fullPath":"http://localhost:8090/categories/about-halo.html","priority":0}],"metas":{},"topped":false}],"pageable":{"sort":{"empty":false,"sorted":true,"unsorted":false},"offset":0,"pageNumber":0,"pageSize":5,"unpaged":false,"paged":true},"last":false,"totalPages":5,"totalElements":22,"number":0,"sort":{"empty":false,"sorted":true,"unsorted":false},"first":true,"size":5,"numberOfElements":5,"empty":false}]
2022-03-07 17:15:21.674 DEBUG 38357 --- [tp1299393095-25] run.halo.app.core.ControllerLogAop       : Usage:
StopWatch '/api/admin/posts': running time = 11327751 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
000115792  001%  PrintRequest
010771709  095%  PostController#pageBy
000440250  004%  PrintResponse

2022-03-07 17:15:21.676 DEBUG 38357 --- [tp1299393095-25] run.halo.app.filter.LogFilter            : Ending   url: [http://localhost:8090/api/admin/posts], method: [GET], ip: [[0:0:0:0:0:0:0:1]], status: [200], usage: [15] ms

附加信息

No response

ruibaby commented 2 years ago

/assign @guqing