car*_*ian 8 java spring hibernate date jodatime
所以我在Spring应用程序中遇到了问题.用户可以使用日期选择器工具输入日期,并使用Hibernate将它们存储在Mysql数据库中.该表使用Date字段来存储它们,因此不会节省时间.问题是服务器设置为GMT,我们的用户是EST或GMT-5.因此,日期会正确存储在数据库中,但是当它显示在前端时,它始终显示上一个日期.因为我没有节省时间而惹恼了我,但显然它仍在影响着事情.无论如何,所以12/10/2001将在12/09/2011出现在前端.我已经调查过了,我不允许将服务器更改为EST,因此我现在正在考虑用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
}
Run Code Online (Sandbox Code Playgroud)
我有一个DatePropertyEditor,用于在JSP和Spring之间从文本转换为Date:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这里是一些输入数据的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>
Run Code Online (Sandbox Code Playgroud)
其余的代码都没有处理或触及Date对象,其余的都是通过注释和注入来处理的,而不是.
我建议你使用Spring 3 Converter SPI而不是常规的PropertyEditors.
然后只需编写自定义转换器:
final class StringToDateTime implements Converter<String, DateTime> {
private static final DateTimeFormatter FORMAT = // init here
public DateTime convert(String source) {
return FORMAT.parseDateTime(source);
}
}
Run Code Online (Sandbox Code Playgroud)
但那只是春天的一面.你仍然需要确保Hibernate知道JodaTime.看看Joda Time - Hibernate支持项目.
归档时间: |
|
查看次数: |
7423 次 |
最近记录: |