[英]how to save object with sysdate functionality
我有一個學生對象。 然后有一個稱為到期日期的屬性。 這需要使用數據庫sysdate +值(1000)進行設置。 所以我怎么能用JPA保存。 我不能在jpa准備好的語句查詢本身上執行此操作嗎?
如果我使用sql.date,它是否與我們另存為“ sysdate”時的值完全相同?
我不能在查詢本身上這樣做嗎?
可以將其他屬性設置為對象。 但是問題是這個到期日期,因為它需要sysdate並為其添加另一個值,例如:expiry date = sysdate + 1000; 我如何用jpa准備的語句來完成此操作。 請回復我
使用單獨的查詢來檢索sysdate並將其設置為對象該怎么辦。
我通常創建一個Clock來處理此問題:
public interface Clock {
Date now();
}
public class HibernateClock implements Clock {
//use query to retieve the db sysdate
}
您可以在Java本身中添加它。 使用日歷對象添加日期。
Calendar expirydate=Calendar.getInstance();
expirydate.add(Calendar.DATE, 1000);
然后
expirydate.getTime()將給您過期日期對象。
為什么要使用sysdate
? 它的語法是特定於數據庫的,並且還取決於數據庫主機的時鍾,而不是應用程序主機的時鍾。
最簡單的方法是使用java.util.Date
作為expiryDate
的類型和new Date(System.currentTimeInMillis() + 1000)
。 在字段的聲明中使用該值將其作為新創建Student
默認值,或在修改現有Student
時將其用作傳遞給setter的值。
public class Student {
...
/**
* Using java.util.Date here. Hibernate knows to convert it automagically to java.sql.Date.
* Set default value to current time + 1 second, if this is your requirement.
*/
private Date expiryDate = new Date(System.currentTimeInMillis() + 1000);
public void setExpiryDate(final Date expiryDate) {
this.expiryDate = expiryDate;
}
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.