import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
public class DateItem {
private Date date;
/**
* @return the date
*/
@Id
@Column(name = "DATE_VALUE")
@Temporal(TemporalType.TIMESTAMP)
public Date getDate() {
return date;
}
/**
* @param date
* the date to set
*/
public void setDate(Date date) {
this.date = date;
}
}
然后:
@PersistenceContext
EntityManager em;
/**
* @return System date on DB server
*/
public Date getSystemDate() {
Query query = em.createNativeQuery(
"SELECT CURRENT_TIMESTAMP", DateItem.class);
DateItem dateItem = (DateItem) query.getSingleResult();
return dateItem.getDate();
}
1条答案
按热度按时间insrf1ej1#
根据jsr 220:EnterpriseJavaBeans 3.0规范:
4.6.16函数表达式
java持久性查询语言包括以下内置函数,可以在查询的where或having子句中使用。
如果函数表达式的任何参数的值为null或未知,则函数表达式的值未知。
[...]
4.6.16.3日期时间函数
datetime函数返回数据库服务器上当前日期、时间和时间戳的值。
所以我已经很惊讶你可以写第二种形式,这是不正确的规范,因此可能无法移植。
对我来说,这样做的“正确”方法是创建一个类型为date字段的类
java.util.Date
并用本机查询填充它。类似于:然后: