私は、この「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のブール型の間のマッピングに問題がありますか?
Hibernateは、エンティティのフィールドがあると仮定されたreturnPolicy
テーブルの列に対応しますreturn_policy
。しかし実際には、列名がありますreturnPolicy
Hibernateは、列名は、それが実体フィールド名から派生する必要があるものになどのネーミング戦略に従っています。あなたは明示的に使用するかどうかを指定する必要がありますImplicitNamingStrategy
かPhysicalNamingStrategy
。Hibernateはこのためのボックスクラスのうち用意されています。
また、この特定の問題のために、明示的な列名を指定してフィールドに注釈を付けることは、ISは理解いたします。
参照してください。この多くのためのSOの答えを。