首页 > 解决方案 > 具有相同标识符值的不同对象已与带有 SpringBoot 的会话相关联

问题描述

我的代码有问题,我看过各种类似问题的帖子,但我无法解决我的问题。

我正在用一个小工厂开发一个 Erp,接下来是我的对象模型:

  1. 文章
  2. ArticuloCompras 扩展了 Articulo
  3. ArticuloProduccion 扩展了 Articulo

我的模型代码是下一个:对于 Articulo:

@Entity(name="articulos")
@Inheritance(strategy=InheritanceType.JOINED)
public class Articulo {
    
    /*@Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;*/
    @Id
    @Column(unique = true, nullable = false)
    private String codigo;
    private String descripcion;
    @Enumerated(EnumType.STRING)
    private TipoArticulo tipo;
    private boolean ignorarMrp;
    private String plano;
    private String dTecnicos;

对于 ArticuloCOMpra:

@Entity(name="articulos_compra")
@PrimaryKeyJoinColumn(name="codigo")
public class ArticuloCompras extends Articulo {
    
    private boolean granel;
    private String dCompra;
    @ManyToOne//(optional = false, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name="proveedor_actual_id")
    private Proveedor proveedorActual;

对于 ArticuloProduccion:

@Entity(name="articulos_produccion")
@PrimaryKeyJoinColumn(name="codigo")
public class ArticuloProduccion extends Articulo {
    
    private boolean premontaje;
    //@OneToOne
    @Transient
    private Ruta ruta;
    /*@ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name="articulo_estructura", 
            //joinColumns=@JoinColumn(name="articulo_codigo", referencedColumnName="codigo"), 
            inverseJoinColumns= {
                    @JoinColumn(name="articulo_utilizado", referencedColumnName="articuloUtilizado"), 
                    @JoinColumn(name="fecha_inicio", referencedColumnName="fechaInicio"), 
                    @JoinColumn(name="fecha_fin", referencedColumnName="fechaFin"), 
                    @JoinColumn(name="cantidad", referencedColumnName="cantidad"),
                    @JoinColumn(name="tipo_unidad", referencedColumnName="unidad")}
            )*/
    @Transient
    private List<Utilizado> estructura;

我的视图代码是下一个:

form th:action="@{/articulos/guardar}" th:object="${articulo}" class="form" method="post">
                    <div class="col alert alert-danger" th:if="${#fields.hasErrors('*')}" role="alert">
                        <p>Se han encontrado los siguientes errores al enviar el formulario:</p>
                        <ul>
                            <li th:each="err : ${#fields.errors('*')}" th:text="${err}" />
                        </ul>
                    </div>
                    <h6 class="ml-3">Articulo</h6>
                    <div class="form-art-container">
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <label for="codigo" class="input-group-text">Codigo</label>
                            </div>
                            <input type="text" class="form-control" name="codigo" placeholder="codigo" id="codigo">
                        </div>
                        <div class="form-group">
                            <label for="denominacion">Denominacion</label>
                            <input type="text" class="form-control" name="descripcion" placeholder="denominacion" id="denominacion">
                        </div>
                        <div class="form-group">
                            <label for="tipo_articulo">Tipo de articulo</label>
                            <select class="form-control" name="tipo" id="tipo_articulo" >
                                <option value="COMPRAS">COMPRAS</option>
                                <option value="PRODUCCION">PRODUCCION</option>
                                <option value="ACABADO">ACABADO</option>
                                <option value="COMERCIALIZACION">COMERCIALIZACION</option>
                            </select>
                        </div>
                        <div class="form-check form-check-inline">
                            <label class="form-check-label">
                                <input type="checkbox" name="granel" id="" class="form-check-input">Granel
                            </label>    
                        </div>
                        <div class="form-check form-check-inline">
                            <label class="form-check-label">
                                <input type="checkbox" name="premontaje" id="" class="form-check-input">Premontaje
                            </label>    
                        </div>
                        <div class="form-check form-check-inline">
                            <label class="form-check-label">
                                <input type="checkbox" name="ignorarMrp" id="" class="form-check-input">Ignorar en MRP
                            </label>    
                        </div>
                        
                    </div>
                    <h6 class="ml-3">Opciones de Compras</h6>
                    <div class="form-art-container">
                        <div class="form-group">
                            <label for="proveedor">Proveedor</label>
                            <input type="text" class="form-control" name="proveedor" placeholder="proveedor" id="proveedor">
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <label for="referencia_proveedor" class="input-group-text">Referencia Proveedor:</label>        
                            </div>
                            <input type="text" class="form-control" name="referencia_proveedor" placeholder="referencia_proveedor" id="referencia_proveedor">
                        </div>
                        <div class="form-group">
                            <label for="datos_compras">Datos Compras</label>
                            <input type="text" class="form-control" name="dCompra" placeholder="datos_compras" id="datos_compras">
                        </div>
                        
                    </div>
                    <h6 class="ml-3">Opciones Tecnica</h6>
                    <div class="form-art-container">
                        <div class="form-group">
                            <label for="plano">Plano</label>
                            <div class="input-group">
                                <input type="text" class="form-control" name="plano" placeholder="plano" id="plano">
                                <div class="input-group-append">
                                    <button class="btn btn-primary">Seleccionar</button>
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="datos_tecnicos">Datos Tecnicos</label>
                            <input type="text" class="form-control" name="dTecnicos" placeholder="datos_tecnicos" id="datos_tecnicos">
                        </div>
                        
                    </div>
                    <h6 class="ml-3">Opciones de Comercializacion</h6>
                    <div class="form-art-container">
                        <div class="form-group">
                            <label for="datos_comercial">Datos Comercial</label>
                            <input type="text" class="form-control" name="d_comerciales" placeholder="datos_comercial" id="datos_comercial">
                        </div>
                        
                    </div>
                    <hr>
                    <button class="btn btn-primary" type="submit">Enviar</button>
                    <button class="btn btn-primary">Cancelar</button>
                </form>

我的控制器代码是下一个:

@PostMapping("/guardar")
public String guardarArticulo(@RequestParam(value="granel", required = false) boolean granel, @RequestParam(value="premontaje", required = false) boolean premontaje, 
        @RequestParam(value="ignorarMrp", required = false) boolean ignorarMrp, @RequestParam(value="proveedor", required = false) String proveedor, 
        @RequestParam(value="dCompra", required = false) String dCompra, @RequestParam(value="dComercializacion", required = false) String dComercializacion, 
        Articulo articulo, BindingResult result, Model model) {
    if(result.hasErrors()) {
        for(ObjectError error : result.getAllErrors()) {
            System.out.println("Ocurrio un error: " + error.getDefaultMessage());
        }
        return "ArticleViews/createForm";
    }
    
    //Articulo art;
    System.out.println(articulo);
    switch(articulo.getTipo()) {
    case COMPRAS:
        ArticuloCompras art;
        Optional<Proveedor> opProv; //hay que buscar el proveedor segun el id que les pase por aqui y sino añadirlo a la BBDD
        Proveedor objProveedor;
        opProv = this.provRepo.findByCodigo(proveedor);
        if(opProv.isPresent()) {
            objProveedor = opProv.get();
        } else {
            System.out.println("crear proveedor..");
            objProveedor = new Proveedor(); //ojo aqui le paso uno vacio solo para pruevas pero habra que crearlo con su formulario si el usuario quiere.
        }
        art = new ArticuloCompras(articulo, granel, dCompra, objProveedor);
        //this.artRepo.save(art);
        this.artRepo.saveAndFlush(art);
        model.addAttribute("articulo", art);
        System.out.println("El siguiente articulo ha sigo persisitido:\n-------------------------------------------\n" + art);
    case PRODUCCION:
        ArticuloProduccion artP;
        artP = new ArticuloProduccion(articulo, premontaje);
        this.artRepo.saveAndFlush(artP);
        model.addAttribute("articulo", artP);
        System.out.println("El siguiente articulo ha sigo persisitido:\n-------------------------------------------\n" + artP);
    }
    return "ArticleViews/guardar";
}

我想根据用户输入表单来坚持 ArticuloCompras 和 ArticuloProduccion。当我坚持第一个对象时,应用程序可以工作,但是当我尝试坚持其他对象时,我得到下一个错误:

javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session : [com.ikarus.models.ArticuloProduccion#MFE0925]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:123) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:794) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:770) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_241]
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:366) ~[spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at com.sun.proxy.$Proxy86.merge(Unknown Source) ~[na:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_241]
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:314) ~[spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at com.sun.proxy.$Proxy86.merge(Unknown Source) ~[na:na]
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:557) ~[spring-data-jpa-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.saveAndFlush(SimpleJpaRepository.java:569) ~[spring-data-jpa-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_241]
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371) ~[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204) ~[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657) ~[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621) ~[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605) ~[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366) ~[spring-tx-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178) ~[spring-data-jpa-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at com.sun.proxy.$Proxy93.saveAndFlush(Unknown Source) ~[na:na]
at com.ikarus.controllers.ArticuloController.guardarArticulo(ArticuloController.java:154) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_241]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_241]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.33.jar:9.0.33]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_241]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_241]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.33.jar:9.0.33]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_241]

这是我第一次在这里写帖子,请原谅我的错误,谢谢。

标签: springspring-bootjpapersistence

解决方案


推荐阅读