私は結合を実装しようとしていますが、私はエラーに直面しています。私は製品テーブルとストアテーブルを持っています。外部キーによる製品の表参照ストアのテーブルの下に示すように:JPQLクエリの何が問題ですか?
Product.java
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long pId;
private String model;
private String brand;
private byte[] image;
private Long price;
private String currency;
private String transmissionType;
private String fuelType;
@ManyToOne
@JoinColumn(name="storeId")
private Store store;
// … getters and setters
}
さて、私は今Store.java
@Entity
public class Store {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long storeId;
private String locality;
private String city;
private String state;
private String zipCode;
private String phone;
// … getters and setters
}
を示し、Iが示しますレポジトリ
public interface ProductRepo extends JpaRepository<Product, Long> {
@Query("select p from Product p join p.storeId s where p.storeId = s.storeId and s.city = :city")
public List<Product> findByCity(@Param("city") String city);
@Query("select p from Product p join p.storeId s where p.storeId = s.storeId and s.state = :state")
public List<Product> findByState(@Param("state") String state);
}
ここで、エラーは、結合を実装する最後の2つのクエリが原因です。私がやりたいことは、上記の通り店舗が特に市または州にあるすべての商品を手に入れることです。
私が遭遇したエラーは次のとおりです。ApplicationContextの起動
エラー。自動構成 レポートを表示するには、「デバッグ」を有効にしてアプリケーションを再実行します。 2016年10月16日 09:53:25.203 ERROR 16132 --- [メイン] osboot.SpringApplication: エラー名でBeanを作成する「catalogueServiceController:アプリケーションの起動が
org.springframework.beans.factory.UnsatisfiedDependencyExceptionを失敗しました': ' productRepo 'フィールドで表現されている満足度の低い依存関係。 例外はorg.springframework.beans.factory.BeanCreationExceptionです: 名前 'productRepo'を持つBeanの作成中にエラーが発生しました:initメソッドの呼び出し が失敗しました。入れ子にされた例外はjava.lang.IllegalArgumentExceptionです: メソッドの照会で検証が失敗しましたpublic abstract java.util.List com.practice.rest.assignment1.repository.ProductRepo.findByCity(java.lang.String)! など....
質問にはどのようなエラーがありますか?
「Product」と「join」の間に「p」を追加するのを忘れた場合を除いて、あなたの答えは正しいです。クエリはstore.city =:cityのstoreとしてProduct p join p.storeからpを選択する必要があります。残りは正しいです。歓声!! –