2017-05-12 11 views
0

リポジトリインタフェースを使用する場合は、この実装を使用できます.PagingAndSortingRepository。Spring DATA JPA - JPA算術関数のサポート

この実装では、Sortオブジェクトを使用してORDER BY要求を生成できます。

私はこれらのPOJOている場合:

@Entity 
public class Data{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private String data; 

    @OneToMany 
    private Set<Like> likes; 

... 
} 

@Entity 
public class Like{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private String data; 

... 
} 

をそして、私はスプリングによって永続性層のために、このインターフェイスを使用する場合:だから

public interface DataRepository extends PagingAndSortingRepository<Data, Long> { 
    List<Data> findBy...(Pageable page); 
} 

、私は好きの数だけ注文したいです。しかし、私はそれを行うことはできません。なぜなら、プロパティはコレクション(私がソートするプロパティをソートすると、それは私が理解できないソートを行います)です。 JPAでは、このJPQL要求を使用することができます。

SELECT * FROM DATA order by SIZE(d.likes); 

だから、ソート対象によって直接使うこの演算機能を使用することは可能でしょうか? querySQLインターフェイスでこれを実行できますか?

Thxを:)

+0

@Query( "SELECT d FROM Data d ORDER BY SIZE(d.likes)")ページ findAll(Pageable page) 'を実行できますか? – manish

答えて

0

一つの解決策は、集計データのデータベースビューを作成し、例@SecondaryTable、それはあなたの元のエンティティの代わりに使用する以外のために使用して、このビューにデータをリンクすることです。

関連する問題