ブラウザでURLを[〜#〜] get [〜#〜 ]すべての製品。
ブラウザにも以下が表示されます:
予期しないエラーが発生しました(type = Internal Server Error、status = 500)。 ResultSetを抽出できませんでした。 SQL [n/a];ネストされた例外はorg.hibernate.exception.SQLGrammarExceptionです:ResultSetを抽出できませんでした
returnPolicyは、この問題を引き起こしている唯一の変数です。データベースとJavaのProductクラスの両方から変数自体を削除すると、データベースからすべての値を正常に取得できます。
これは、RESTController:の一部であるgetAllProductsメソッドです。
@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;
@Repository public interface ProductRepository extends JpaRepository<Product, String>{ }
SQL tinyint(Boolean)とJavaのブール型の間のマッピングに問題はありますか?
あなたのreturnPolicy
は列return_policy
にマッピングされていません。次のようにしてこれをすばやく修正できます
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private int price;
private String vendor;
private String description;
@Column(name = "return_policy")
private Boolean returnPolicy;
@JsonNaming
アノテーションは、エンティティフィールド名からどの列名を派生させるかという命名戦略を管理します。
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@JsonIgnoreProperties(ignoreUnknown = true)
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;