Cómo arreglar "java.sql.SQLSyntaxErrorException: Desconocido columna 'product0_.return_policy' en 'lista de campos'" excepción?

svms54:

He estado recibiendo este "SQLSyntaxErrorException: Desconocido columna 'product0_.return_policy' en 'lista de campos'" cuando trato de ejecutar la URL en mi navegador a GET todos los productos .

Mira aquí

El navegador muestra la continuación, así:

Hubo un error inesperado (tipo = Error interno del servidor, estado = 500). No fue posible extraer ResultSet; SQL [n / a]; excepción anidada es org.hibernate.exception.SQLGrammarException: no se pudo extraer ResultSet

ReturnPolicy es la única variable que está causando este problema. Soy capaz de recuperar correctamente todos los valores de la base de datos cuando se quita la propia variable tanto de la base de datos y de la clase de producto en Java.

Esta es la getAllProducts método que es parte de la RESTController:

@RequestMapping(method=RequestMethod.GET, value="/products")
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

que funciona muy bien cuando se quita la variable ReturnPolicy por completo.

Esta es la descripción de la tabla de MySQL:

Los valores almacenados en la columna de ReturnPolicy:

politica de devolucion

  0 
  0 
  1 
  1 
  1 

Este es el código para las variables del modelo de 'productos':

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="product")
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private int price;
    private String vendor;
    private String description;
    private Boolean returnPolicy;

ProductRepository

@Repository public interface ProductRepository extends JpaRepository<Product, String>{ }

¿Hay un problema con la asignación entre tinyint SQL (booleano) y el tipo booleano de Java?

Nikhil Sahu:

Hibernate es suponiendo que el campo entidad returnPolicycorresponde a la columna de la tabla return_policy. Pero, en realidad, es el nombre de columnareturnPolicy

Hibernate sigue una estrategia de nomenclatura en cuanto a qué nombre de la columna que debe derivar de los nombres de campos entidad. Se debe especificar explícitamente si se debe utilizar ImplicitNamingStrategyo PhysicalNamingStrategy. Hibernate ofrece fuera de las clases de caja de este.

Por otra parte, para este tema específico, anotando el campo con el nombre de columna explícita hará es entender.

Ver esta respuesta, así por más.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=185867&siteId=1
Recomendado
Clasificación