例外:「『フィールドリスト』に不明な列 『product0_.return_policy』をjava.sql.SQLSyntaxErrorException」をどのように修正するには?

svms54:

私は、この「SQLSyntaxErrorExceptionを:不明な列『product0_.return_policy』 『をフィールドリスト』に」なってきた私は私のために、ブラウザ上でURLを実行しようとすると、GETすべての製品を

ここを見て

ブラウザのショーだけでなく、以下の:

予期しないエラー(タイプ=内部サーバーエラー、状況= 500)がありました。ResultSetを抽出することができませんでした。SQL [N / A]。ネストされた例外はorg.hibernate.exception.SQLGrammarExceptionです:ResultSetを抽出することができませんでした

returnPolicyは、この問題を引き起こしている唯一の変数です。私は両方のデータベースからとJavaのProductクラスから変数自体を削除すると、正常データベースからすべての値を取得することができますよ。

これは、getAllProductsの RESTControllerの一部である方法。

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

これは、私は完全にreturnPolicy変数を削除すると正常に動作します。

これは、 MySQLのテーブルの説明です:

returnPolicy列に格納されている値:

返品規則

  0 
  0 
  1 
  1 
  1 

これは、「製品」モデルの変数のためのコードです:

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>{ }

SQLのTINYINT(ブール値)とJavaのブール型の間のマッピングに問題がありますか?

ニキルSahu:

Hibernateは、エンティティのフィールドがあると仮定されたreturnPolicyテーブルの列に対応しますreturn_policyしかし実際には、列名がありますreturnPolicy

Hibernateは、列名は、それが実体フィールド名から派生する必要があるものになどのネーミング戦略に従っています。あなたは明示的に使用するかどうかを指定する必要がありますImplicitNamingStrategyPhysicalNamingStrategyHibernateはこのためのボックスクラスのうち用意されています。

また、この特定の問題のために、明示的な列名を指定してフィールドに注釈を付けることは、ISは理解いたします。

参照してください。この多くのためのSOの答えを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=185864&siteId=1