0

我有一个对象学生。然后有一个属性叫做到期日。这需要使用数据库 sysdate + 一个值(1000)来设置。那么我怎样才能用jpa保存。我不能在 jpa 准备好的语句查询本身上做吗?

如果我使用 sql.date,它给出的值是否与我们保存为“sysdate”时的值完全相同?

我不能在查询本身上做吗?

可以为对象设置其他属性。但问题是这个到期日期,因为它需要 sysdate 并为其添加另一个值,例如:到期日期 = sysdate + 1000; 我如何使用 jpa 准备好的语句来做到这一点。请回复我

4

3 回答 3

0

你可以在java本身中添加它。使用日历对象添加天数。

      Calendar expirydate=Calendar.getInstance();
     expirydate.add(Calendar.DATE, 1000);

然后
expirydate.getTime() 会给你过期日期对象。

于 2013-07-26T10:59:55.723 回答
0

为什么要使用sysdate?它的语法是特定于数据库的,并且还取决于数据库主机的时钟,而不是应用程序主机的时钟。

最简单的方法是java.util.Date用作expiryDate的类型和 的值new Date(System.currentTimeInMillis() + 1000)。在字段的声明中使用这个值作为新Student创建的默认值,或者在修改 existant 时使用它作为传递给 setter 的值Student

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;
    }

    ...

}
于 2013-07-26T11:16:06.983 回答
0

如何使用单独的查询来检索 sysdate 并将其设置为您的对象。

我通常创建一个时钟来处理这个:

public interface Clock {
    Date now();
}

public class HibernateClock implements Clock {
    //use query to retieve the db sysdate
}
于 2013-07-26T10:49:03.650 回答