単一のスーパークラスから継承するクラスのセットがあります。
Super
|
+------+-------+
Aaaa Bbbb Cccc
次に、各Aaaa、Bbbb、CcccにメソッドfindByTagが含まれている必要があります。問題は、私がそれを一般的に定義することができないということです。次の例では、Aaaaの特定のfindByTagを定義しています。
public interface AaaaRepository extends SuperRepository<Aaaa> {
@Query("select distinct a from Aaaa a " +
"join a.tags t " +
"join fetch a.locale where t = ?1")
public List<Event> findByTag(Tag t);
}
スーパークラスは@MappedSuperclassであり、データベースに独自のテーブルがないことに注意してください。
各クラスでその名前に置き換えられるクエリで、ある種の「スーパー」を使用したいと思います。
2番目の問題は、@ElementCollectionを強制的にフェッチする方法がわからないことです。クエリでは常に「フェッチに参加」と明示的に言う必要があります。フェッチされていない場合、トランザクションが終了すると、明示的にフェッチしなかったオブジェクトにアクセスできなくなります。(LazyFetchの例外...)
ありがとう