6

私はいくつかのドメインオブジェクトを持っています:

@Entity
public class Log {

}

@Entity
public class LogLetter extends Log {

}

@Entity
public class LogAction extends Log {

}

そして、ログの子を取得できるリポジトリを1つだけ持ちたいと思っています。

このようなことを理論的に行うことはできますか?

public interface LogRepository extends CrudRepository<Log, Long> {

    @Query("select from ?1)
    public <T> List<T> getLog(Class<T> clazz);

}

そして、このメソッドを呼び出します:

List<LogLetter> logLetters = getLog(LogLetters.class);

私が説明したことを行うための他のアプローチはありますか?

4

2 に答える 2

2

箱から出してすぐに使用できるとは思いませんが(特にでパラメータを使用できないという事実を考えるとfrom)、カスタムメソッドとして実装できます(1.4。カスタム実装を参照)。

public <T> List<T> getLog(Class<T> clazz) {
    return em.createQuery("from " + clazz.getSimpleName()).getResultList();
}
于 2012-07-09T11:01:19.497 に答える
1

次を使用して実装することもできます#{#entityName}

@Query("SELECT o FROM #{#entityName} o where o.attribute1=:attribute1")
Page<T> findByAttribute1Custom(@Param("attribute1") String attribute1, Pageable pageable);
于 2014-11-10T12:59:18.227 に答える