0

Spring PetClinic アプリケーションを使用してSpring および Hibernate プログラミングを学習しています。また、JPA を使用して猫の飼い主のリストを取得しようとしています。そこで、OwnerRepository および JpaOwnerRespository クラスに findByPetType() メソッドを追加しました。私の質問は、クエリの書き方です。今のところ hsqldb データベースを使用しています。これまでの私のコードは次のとおりです。

@SuppressWarnings("unchecked")
public Collection<Owner> findByPetType(String typeID) {
    // using 'join fetch' because a single query should load both owners and pets
    Query query = this.em.createQuery("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE pet.type_id LIKE :typeID");
    query.setParameter("typeID", typeID + "%");
    return query.getResultList();
}  

後で、猫の飼い主、犬の飼い主などを一覧表示する別の Web ページを出力する予定です。これらのページごとに、ページ制約 (ページ制約 (猫や犬などのみ。)

上記のクエリを変更して、希望する結果セットを返す方法を誰か教えてもらえますか?

今すぐ findByPetType() メソッドを取得したいだけです。良いクエリから始めることができれば、残りの部分を自分でまとめることに挑戦します。そして、この構文についてどこで読むことができますか? 私が正しく理解していれば、Javaオブジェクト参照とデータベース要素が混在しているようです。

4

1 に答える 1

1

今後は as と呼ばれるHibernate に指示するas句が欠落している可能性があります。次のようにコードを変更してみてください。owner.petspet

Query query = this.em.createQuery("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets as pet WHERE pet.type_id LIKE :typeID");
于 2013-09-05T18:09:40.893 に答える