簡體   English   中英

Spring Data JPA限制嵌套集合大小為Pageable

[英]Spring Data JPA limit nested collection size as Pageable

我正在使用SpringBoot 2.0.4。

這個想法是檢索一個包含Message對象集合的Conversation實體。 但是我需要控制消息收集的大小,例如僅檢索20個最新消息。

@Entity
public class Conversation {
    //fields...
    @OneToMany(cascade = CascadeType.ALL)
    private List<Message> messages = new ArrayList<>();
    //methods...
}

@Entity
public class Message {
    //....
}

因此,當我像這樣通過ID檢索對話時:

conversationRepository.findById(id)

如何僅包含x(例如20條)最新消息?

MessageRepository界面中,添加:

@Query("select messages from Conversation c inner join c.messages messages where c = :conversation")
  public Page < Message > findByConversation(@Param("conversation") Conversation conversation, Pageable pageable);

要返回最后20條(甚至n條)記錄,請按消息ID降序對它們進行排序:

Pageable pageable = new PageRequest(0, 20, Sort.Direction.DESC, "id");
Page<Message> messages = repo.findByConversation(conversation, pageable); 
List<Message> last20MessageList = messages.getContent();

您可以根據情況嘗試使用此代碼

Pageable pageable = new PageRequest(0, 20, Sort.Direction.DESC, "id");

Page<Message> lastPage = conversationRepository.findById(id, pageable);
// this is a list of the last 20 records
List<Message> latestMessage = lastPage .getContent();

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM