2017-07-05 10 views
0

私はSpring Bootで新しくなっています。私はSOとgoogleで私の質問の答えを見つけようとしましたが、私はそれに対して正確な答えを見つけることができません。結合部の制限を使用したHSQLクエリ

Spring Boot JpaRepositoryクラスで、Customerに関連する昇順の会計ログの数が限られているIDでCustomerを返す関数を作成しようとしています。

JpaRepositoryのコードのマイライン:

@Query("select c from Customer left outer join AccountingLog a on a.customer.id = c.id where c.id= :id") 
Customer getWithLimitedNumberOfLastTransactions(@Param("id") Long id, @Param("limit") int limit); 

のみ関連するコードを持つCustomerクラス:

@Entity 
public class Customer {   
    //... 
    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    @Column(nullable = true) 
    @JsonManagedReference 
    private Set<AccountingLog> accountingLogs; 
    //... 
} 

のみ関連するコードを顧客クラス:

@Entity 
public class AccountingLog { 
    //... 
    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "customer_id") 
    @JsonBackReference 
    private Customer customer; 
    //... 
} 

だから私は指定された番号(変数の名前を指定してIDで1つの顧客を選択するHSQLクエリを探しています)顧客に関連した昇順(最後に最初のもの)のアカウンティングログが表示されます。

ありがとうございました!

答えて

1

MySQLを使用している場合は@Queryでネイティブクエリを記述することができます。

@Query(value="select c from Customer left outer join AccountingLog a on a.customer.id = c.id where c.id= :id limit :limit", nativeQuery = true)

またはOracle:

@Query(value="select c from Customer left outer join AccountingLog a on a.customer.id = c.id where c.id= :id and ROWNUM < :limit", nativeQuery = true)

関連する問題