通过Spring JPA存储库获取过去3天的记录

通过Spring JPA存储库获取过去3天的记录,spring,spring-data-jpa,Spring,Spring Data Jpa,我有一个实体,其中包含字段日期 @Entity @Table(name="messages", schema = "users") ... public class Message { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "author") private Str

我有一个实体,其中包含字段
日期

@Entity
@Table(name="messages", schema = "users")
...
public class Message {

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

    @Column(name = "author")
    private String author;

    @Column(name = "tags")
    private String tags;

    @Column(name = "message_date")
    private LocalDate date;

    @Override
    public String toString() {
       ...    
    }
}

我建议将逻辑与实际查询分开。服务可以处理所有中间事务,例如:

@Service
public class MessageService {
    private final MessageRepository repository;

    @Autowired
    public MessageService(MessageRepository repository) {
        this.repository = repository;
    }

    List<Message> getLastThreeDays() {
        // subtract 3 days from today
        LocalDate threeDaysAgoDate = LocalDate.now().minusDays(3);
        return this.repository.findAllWithDateAfter(threeDaysAgoDate);

    }
}
@服务
公共类消息服务{
私有最终消息存储库;
@自动连线
公共消息服务(消息存储库){
this.repository=存储库;
}
列出getLastThreeDays(){
//从今天减去3天
LocalDate threeDaysAgoDate=LocalDate.now().minusDays(3);
返回this.repository.findAllWithDateAfter(三天SagoDate);
}
}
并且您的存储库保持整洁:

@Repository
public interface MessageRepository extends JpaRepository<Message, Long> {

    Optional<Message> findByMessageId(Long id);

    @Query("select m from Message m where date >= :threeDaysAgoDate")
    List<Message> findAllWithDateAfter(@Param("threeDaysAgoDate") LocalDate threeDaysAgoDate);

}
@存储库
公共接口MessageRepository扩展了JpaRepository{
可选findByMessageId(长id);
@查询(“从消息m中选择m,其中日期>=:threeDaysAgoDate”)
列出findAllWithDateAfter(@Param(“threeDaysAgoDate”)LocalDate threeDaysAgoDate);
}

这是否回答了您的问题?不幸的是,没有。
@Service
public class MessageService {
    private final MessageRepository repository;

    @Autowired
    public MessageService(MessageRepository repository) {
        this.repository = repository;
    }

    List<Message> getLastThreeDays() {
        // subtract 3 days from today
        LocalDate threeDaysAgoDate = LocalDate.now().minusDays(3);
        return this.repository.findAllWithDateAfter(threeDaysAgoDate);

    }
}
@Repository
public interface MessageRepository extends JpaRepository<Message, Long> {

    Optional<Message> findByMessageId(Long id);

    @Query("select m from Message m where date >= :threeDaysAgoDate")
    List<Message> findAllWithDateAfter(@Param("threeDaysAgoDate") LocalDate threeDaysAgoDate);

}