Java Spring Jpa LessThanEqual for postgres时间戳字段

Java Spring Jpa LessThanEqual for postgres时间戳字段,java,spring,postgresql,spring-boot,spring-data-jpa,Java,Spring,Postgresql,Spring Boot,Spring Data Jpa,我在实体类中有字段有效的开始日期 @Basic @Temporal(TemporalType.TIMESTAMP) @Column(name = "effective_startdate", columnDefinition = "TIMESTAMP WITHOUT TIME ZONE") private Date effectiveStartdate; 我想在我的Jpa repository类中使用它来过滤到我的getmapping方法中以供进一步使用: List<PoJoObject

我在实体类中有字段有效的开始日期

@Basic
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "effective_startdate", columnDefinition = "TIMESTAMP WITHOUT TIME ZONE")
private Date effectiveStartdate;
我想在我的Jpa repository类中使用它来过滤到我的getmapping方法中以供进一步使用:

List<PoJoObject> findByEffectiveStartdateLessThanEqual(Date date);
列出查找到的有效开始日期等于(日期);
对于整个操作,我的后端数据库是postgres,同一个字段的类型是TIMESTAMP

是否有人可以帮助我从my getmapping调用中获得预期的格式(“yyyy-MM-dd HH:MM:ss”)响应

我对此一无所知,不知道Spring内部是如何处理日期、序列化/反序列化以及与postgres db进行比较的

注:

  • 在java代码中使用java.util.Date
  • postgres有效开始日期输出如下所示:
2019-09-19 18:28:23.012

  • 同一字段的响应格式如下:
“生效开始日期”:“2019-07-30T04:37:55.000+0000”


必须将JsonFormat注释添加到effectiveStartdate:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "effective_startdate", columnDefinition = "TIMESTAMP WITHOUT TIME ZONE")
private Date effectiveStartdate;

顺便说一句,@Basic注释是不必要的,而列名也是多余的,因为Hibernate就是这样翻译成camelCase的。

我使用下划线的,因为在postgres侧,我使用camelCase模式来表示列,它会自动变平为所有小写。谢谢你的评论,根据我的回答,我采用了你建议的模式,效果非常好。但是我的查询结果与HH:mm:ss不匹配。传递值仅为yyy-mm-dd的SSS正在满足给定条件。我还更新了问题以使其更清晰。我回滚了您对问题所做的更改,因为它将一个问题变成了一个完全不同的问题。请接受解决您原来问题的答案并创建一个新的答案,而不是更改问题。