我正在尝试学习Spring Data并使用JpaRepository尝试从数据库中查询日期对象。但是,每次查询日期时,结果总是比我的预期值提前两天。时间成分似乎是正确的;这只是错误的日期。事实是,只有在我的机器上编译代码时才会发生这种情况。在另一个人身上做这件事会产生正确的结果。有什么我需要注意的吗?非常感谢任何帮助。
DB值:2014-05-29 19:47:00.576
下面的testRepo()返回2014-05-27 19:47:00.576。
public void testRepo() {
System.out.println(repo.findByName("TESTDATE").getValue());
}
==========
@Autowired
private EntityManager em;
public DateObject findByName(String name) {
StringBuffer sql = new StringBuffer();
sql.append("select * ");
sql.append("from static_dates ");
sql.append("where name = '" + name + "'");
Query q = em.createNativeQuery(sql.toString(), DateObject.class);
List<DateObject> resultList = q.getResultList();
System.out.println(resultList.get(0).getValue());
return resultList.get(0);
}
======
@Entity
@Table(name = "static_dates")
public class DateObject {
@Id
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@Column(name = "value")
private Date value;
public Date getValue() {
return value;
}
public void setValue(Date value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
此外,保存日期值会产生正确的结果。例如,如果我调用repo.save(...)并传递当前系统日期,则相同的值将反映在数据库中。只有SELECT调用似乎不正确。
答案 0 :(得分:0)
通过将我的MS SQL驱动程序从v3.0更新到v4.0来解决这个问题。