所以我在我的Spring应用程序中遇到问题。用户可以使用日期选择工具输入日期,并使用Hibernate将它们存储在Mysql数据库中。该表使用日期字段来存储它们,所以它不会节省时间。问题是服务器设置为GMT,我们的用户是EST或GMT-5。所以日期正确地存储在数据库中,但是当它显示在前端时,它总是显示前一个日期。因为我没有节省时间,但显然它仍然影响着一些东西,这让我感到困扰。无论如何,所以12/12/2001将显示在12/09/2011前端。我已经研究过它,并且我不允许将服务器更改为EST,因此我现在正在考虑用Jodatime解决此问题(除非有人知道我正在执行其他操作来实现此目的)或者更简单的解决方案。如何在Spring和Hibernate中使用JodaTime?
我的问题是,我无法找到任何有关如何使用Spring的Jodatime的好信息。目前我只是试图改变一个对象,从使用java的Date
到使用joda的LocalDate
。无论我尝试什么,尽管我在尝试从数据库中提取日期对象并将其推入LocalDate
对象时遇到“无效流头”和“无法反序列化”的错误。
有人可以提供一些指导我需要做什么来存储和检索,以便这个工作吗?
我使用Spring 3.1的注释和所有的好东西。我很高兴提供代码,但是因为我不确定该做什么,我没有任何我认为会有帮助的代码。从JSP到数据库,我可以真正使用一些帮助。我认为我不确定的主要问题是如何将它存储在服务器上,我认为这就是为什么我得到Hibernate错误。数据库正如我所提到的那样使用Date,所以不会存储时间。我如何将LocalDate转换为此?
下面是一些代码,如果有帮助:
域对象
@Entity
public class Provision {
@Id @GeneratedValue
private Long id;
private LocalDate startDate;
//Getters and setters
}
我有一个DatePropertyEditor为JSP和Spring之间从文本转换为日期:
public class DatePropertyEditor extends PropertyEditorSupport {
@Override
public void setAsText(String value) {
try {
setValue(new SimpleDateFormat("yyyy-MM-dd").parse(value));
} catch (ParseException e) {
setValue(null);
}
}
@Override
public String getAsText() {
if(getValue() != null)
return new SimpleDateFormat("yyyy-MM-dd").format((Date) getValue());
else
return null;
}
}
这里是一些输入数据的JSP:
<td align="right">Start Date:</td>
<td><sf:input path="startDate" dojoType="dijit.form.DateTextBox" required="true" hasDownArrow="true"
onChange="dijit.byId('endDate').constraints.min = arguments[0];" constraints="{datePattern:'MMM d, y'}" />
</td>
其余的代码都不处理或接触Date对象,其余的都是通过注释和注入来处理的,其他的不是。
心灵向我们展示你的代码? – luastoned 2011-12-15 14:57:28