我有一个实体是
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name = "REFRESH_TOKENS")
public class JwtRefreshToken {
@Id
@Column(name = "TOKEN")
private String token;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "USER_ID", nullable = false)
private Tbluser user;
@Column(name = "EXPIRATIONDATETIME")
private LocalDateTime expirationDateTime;
public JwtRefreshToken(String token) {
this.token = token;
}
}
相应的存储库是
JwtRefreshToken findByTokenAndAndExpirationDateTimeBefore( String token, @Param("expirationDateTime") LocalDateTime localDateTime);
有趣的是,即使时间已过,查询也总是返回值。
例如存储在数据库中的值是2019-04-21 22:33:08
我当前的约会时间是2019-04-21T23:02:43.971
但上述
findByTokenAndAndExpirationDateTimeBefore
返回值。我也想比较时间。
最佳答案
您可以启用调试输出以查看参数化查询及其参数,并将其添加到应用程序属性中
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
如果查询根本不使用
@Param("expirationDateTime") LocalDateTime localDateTime
或存在时区问题或一切都很好并且您只是误解了结果,则可能会得到一些提示。