我创建了一个实体,它有两个字段日期和汇率(汇率评级货币(。我想在我的服务类中创建一个方法,这样我就可以找到基于日期-时间的汇率交换,其格式为yyyy/dd/mm,没有其他额外的时间字段。
以下是我迄今为止所做的:
我创建了一个模型:
@Entity
@Getter
@Setter
@Table(name = "ExchangeRate")
public class EmployeeExchangeRate extends BaseEntity {
@Basic
@Temporal(TemporalType.DATE)
@Column(name = "date", nullable = false)
private Date date;
@Column(name = "rate", nullable = false)
private double rate;
}
然后我创建了一个存储库:
public interface EmployeeExchangeRateRepository extends JpaRepository<EmployeeExchangeRate, Long> {
EmployeeExchangeRate findByDate(Date date);
}
在我的服务中,我写了以下方法:
private void findRate(int day, int month, int year){
String s = day + "-" + month + "-" + year;
Optional<EmployeeExchangeRate> foundExchangeRate =
exchangeRateRepository.findByDate(new SimpleDateFormat("yyyy/dd/MM").parse(s));
System.out.println(foundExchangeRate.get());
}
注意:这段代码不起作用,我尝试了几种变体,但无法将字符串正确解析为日期时间。在这个方法中,我想通过天、月和年,并基于这些论点,我想找到一个汇率。问题是,根据日期查找行的最正确方法是什么?如何转换参数:日、月、年到日期,以便根据此日期时间查找行?注意:mySql中的日期表示为yyyy/dd/mm
您正在执行以下操作:
String s = day + "-" + month + "-" + year;
但是在解析时,您需要yyyy/mm/dd
。将数据正确设置为SimpleDateFormat。
public static void main(String[] args) throws ParseException {
String s = "10-10-1989";
Date date = new SimpleDateFormat("yyyy/dd/MM").parse(s);
System.out.println(date);
}
上面的例子抛出了Unparseable date:;10-10-1989";
除此之外,在我看到的评论中,您没有得到唯一的结果,这是有道理的,因为查询没有任何限制。一个日期可能有多行。
修改方法名称以返回一个值或将返回值更改为List<EmployeeExchangeRate>