hql函数current_timestamp()是否使用运行java代码的服务器或运行数据库的服务器的时间?
答案 0 :(得分:4)
HQL查询转换为SQL查询,SQL查询由数据库执行。因此,current_timestamp()
等效的SQL函数将在您的数据库服务器上执行。
答案 1 :(得分:0)
在休眠状态下,每个数据库都有Dialect
个类。这些是该特定数据库的适配器。在这些类中定义了类似current_timestamp
的函数。例如,MySQL 5.7方言是:
public class MySQL57Dialect extends MySQL55Dialect {
public MySQL57Dialect() {
super();
registerColumnType( Types.TIMESTAMP, "datetime(6)" );
registerColumnType( Types.JAVA_OBJECT, "json" );
final SQLFunction currentTimestampFunction = new StaticPrecisionFspTimestampFunction("now", 6 );
registerFunction( "now", currentTimestampFunction );
registerFunction( "current_timestamp", currentTimestampFunction );
registerFunction( "localtime", currentTimestampFunction );
registerFunction( "localtimestamp", currentTimestampFunction );
registerFunction( "sysdate", new StaticPrecisionFspTimestampFunction( "sysdate", 6 ) );
}
public boolean supportsRowValueConstructorSyntaxInInList() {
return true;
}
}
您可以看到那里有功能注册。 Full Code在GitHub页面中处于休眠状态。