我有一个对象学生。然后有一个名为失效日期的财产。这需要使用数据库sysdate +值(1000)进行设置。 那我怎么能用jpa保存。我不能在jpa准备语句查询本身上做到这一点吗?
如果我使用sql.date,它是否与我们保存为'sysdate'时的值完全相同?
我无法在查询本身上执行此操作吗?
可以将其他属性设置为该对象。但问题是这个到期日,因为它需要sysdate并为其添加另一个值,例如:expiry date = sysdate + 1000;我怎么能用jpa准备好的陈述来做。请回复我
答案 0 :(得分:0)
如何使用单独的查询来检索sysdate并将其设置为您的对象。
我通常会创建一个时钟来处理这个问题:
public interface Clock {
Date now();
}
public class HibernateClock implements Clock {
//use query to retieve the db sysdate
}
答案 1 :(得分:0)
您可以在java中添加它。使用日历对象添加天数。
Calendar expirydate=Calendar.getInstance();
expirydate.add(Calendar.DATE, 1000);
然后
expirydate.getTime()将为您提供过期日期对象。
答案 2 :(得分:0)
为什么要使用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;
}
...
}