通过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);
}