我正在使用 JPA 标准查询 hibernate-jpa-2.0-api (1.0.1.Final)。
我想currentDate() + x
使用我的条件查询(sysdate + any value(x) specified)从数据库中获取。
我怎样才能将其cb.currentDate()
用于此目的。
我使用注册自定义函数的自定义方言:
包 de.enerko.aaw2.persistence.dialect;
import java.sql.Types;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.type.StandardBasicTypes;
public class OracleSpatialDialect extends Oracle10gDialect {
public OracleSpatialDialect() {
this.registerColumnType(Types.OTHER, "MDSYS.SDO_GEOMETRY");
this.registerFunction("add_days", new VarArgsSQLFunction(StandardBasicTypes.DATE, "", "+", ""));
}
}
在 persistence.xml 或您用于构建实体管理器的任何技术中指定它:
<property name="hibernate.dialect" value="OracleSpatialDialect" />
而不是像这样使用它:
builder.function("add_days", Date.class, builder.currentDate(), builder.literal(1))
希望有帮助。
干杯,迈克尔。
您必须使用 sql 查询来获取日期时间。但是,您可以通过 hibernate API 来实现这一点
Timestamp timestamp = (Timestamp) getCurrentSession().createSQLQuery("select SYSDATE param from dual").addScalar("param", Hibernate.TIMESTAMP).uniqueResult(); return new DateTime(timestamp);