gpt4 book ai didi

java - 请帮助我解决 Spring Boot 2 中的错误,

转载 作者:行者123 更新时间:2023-11-30 05:30:50 24 4
gpt4 key购买 nike

我有一个存储在 sql server 2014 中的过程:

create database db_spring_2
use db_spring_2
create table tb_usuario( id_usuario int primary key identity(1,1), nombre varchar(200), apellidopat varchar(200), apellidomat varchar(200), email varchar(200) unique, foto_url varchar(500) )
insert into tb_usuario values('Marcos','Marcos','MAr','mar@gmail.com', '123.jpg')

go alter proc usp_usuario as begin select nombre from tb_usuario end

我从 Spring boot 2 项目中调用,但收到此错误:

019-08-21 19:51:31.284 ERROR 6752 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : The column name id_usuario is not valid.
2019-08-21 19:51:31.292 ERROR 6752 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: could not execute query; nested exception is org.hibernate.exception.GenericJDBCException: could not execute query] with root cause

com.microsoft.sqlserver.jdbc.SQLServerException: The column name id_usuario is not valid.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:206) ~[mssql-jdbc-6.1.0.jre8.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.findColumn(SQLServerResultSet.java:686) ~[mssql-jdbc-6.1.0.jre8.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(SQLServerResultSet.java:2337) ~[mssql-jdbc-6.1.0.jre8.jar:na]
at com.zaxxer.hikari.pool.HikariProxyResultSet.getInt(HikariProxyResultSet.java) ~[HikariCP-3.2.0.jar:na]
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$2.doExtract(IntegerTypeDescriptor.java:62) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]
at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:793) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

这里是您调用存储过程的方法

package com.example.demo.repository;

import java.util.ArrayList;
import java.util.List;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import com.example.demo.entity.Usuarios;

@Repository
public interface IUsuarioRepository extends CrudRepository<Usuarios, Integer>{

@Query(value = "exec usp_usuario" , nativeQuery=true )
public List<Usuarios> getUsuarios();
}

我的服务界面

package com.example.demo.repository;

import java.util.List;

import com.example.demo.entity.Usuarios;

public interface IUsuarioService {

public List<Usuarios> getUsuarios();
}

还有我的服务

package com.example.demo.services;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.example.demo.entity.Usuarios;
import com.example.demo.repository.IUsuarioRepository;
import com.example.demo.repository.IUsuarioService;

@Transactional
@Service
public class UusuarioServices implements IUsuarioService {

@Autowired
private IUsuarioRepository usuarioR;

@Override
public List<Usuarios> getUsuarios() {
// TODO Auto-generated method stub
return usuarioR.getUsuarios();
}

}

我的 Controller 休息

@RestController
@RequestMapping("/usuario")
public class UsuarioController {

@Autowired
private IUsuarioService usuarioS;

@GetMapping("/listadoUsuario")
public List<Usuarios> getUsuario(){
return usuarioS.getUsuarios();
}

}

最佳答案

看起来 IUsuarioRepository 正在尝试填充整个 Usuarios 实体,但您的查询仅返回 nombre 字段。

您尚未显示所有相关代码,即 Usuarios 的定义,但查询可能应该是 select *... 而不是 select nombre ... 当前查询仅返回单个 nombre 列,而框架期望返回的结果集(至少)包含 id_usuario 列也是如此。

关于java - 请帮助我解决 Spring Boot 2 中的错误,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57601660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com