(この投稿は議論を続け、重要な部分はすべてここで繰り返されます:(Spring / JpaRepository)BaseEntityRepositoryからSubEntityRepositoryへのJpaRepositoryの継承メソッド)
次のエンティティがあるとします。
@Entity public class BaseEntity { }
@Entity public class SubEntity extends BaseEntity { }
および次のJpaRepository実装:
public interface BaseEntityRepository<T, I> extends JpaRepository<TableWithId, Long> {
@Query("SELECT t FROM BaseEntity t WHERE id = :id")
Optional<T> getById(@Param("id") Long id);
@Query("SELECT t FROM BaseEntity t WHERE customField = :customField")
List<T> findByCustomField(@Param("customField") String customField);
}
SubEntityには、別のリポジトリがあります。
public interface SubEntityRepository extends BaseEntityRepository<SubEntity, Long> {}
JPAは、@ Queryで「BaseEntity」を「SubEntity」に置き換える必要があることを知っていますか、またその理由は何ですか。「いいえ」の場合、私がやりたいことを行うための最良の方法はどれですか。
SPELを使用する必要があります
@Query("SELECT T FROM #{#entityName} T WHERE T.id = :id")
Optional<T> getById(@Param("id") Long id);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加