0

JSF プロジェクトを開発しており、mysql で Hibernate を使用しています

ご存じのとおり (Hibernate のドキュメントに記載されています)、結合はエンティティ間の関連付けを使用します。したがって、内部結合を使用した正しいクエリの例は次のようになります。

select from Person p join p.classes c where c.room = :roomNum

私の場合、関連付けられたエンティティは、目的のエンティティを含む HashMap です。いくつかのコードが役立ちます:

public FamilyGuy{

private String name;
private BigDecimal income;
private HashMap<String, Child> children = new HashMap<Language, Child>();
....
} 

public Child{
private String name;
private BigDecimal expenses;
....
}

私が必要とするのは、次のようなクエリです(以下のクエリは機能しません):

select from FamilyGuy oppressed inner join Child happy where happy.expenses < :threshold

私が得ている例外は次のとおりです。

javax.servlet.ServletException: Path expected for join!

どんな助けでも大歓迎です。

4

1 に答える 1

1
select f from FamilyGuy f 
inner join f.children child
where child.expenses < :threshold

他の toMany アソシエーションと同様です。

あなたが言ったように; 結合は関連付けを使用します。したがって、エンティティの名前 ( ) を指定することはできませんがjoin Child、関連付けを指定する必要があります: join f.children... 質問の冒頭の例と同じです。

于 2013-10-29T16:44:14.440 に答える