簡體   English   中英

如何使用sysdate功能保存對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM