所以我在我的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