我有什么方法可以检查,查询是如何构建的或者传递了什么值?我想检查一下这个查询:
String hql = "from Scheduled where stime <= current_time()"; // QUERY
List list = session.createQuery(hql).list();
我想知道发送current_time()
的价值是什么?
答案 0 :(得分:3)
current_time()
未被hibernate中的特定时间替换 - 它作为SQL的一部分传递给数据库并在那里进行评估。因此,current_time()
将是执行语句时数据库服务器上当前时间的任何时间。
答案 1 :(得分:2)
您可以启用Hibernate logging,这两个参数应该对您有所帮助:
org.hibernate.SQL
- 按原样记录所有SQL DML语句
执行org.hibernate.type
- 记录所有JDBC参数答案 2 :(得分:0)
如果底层数据库是SQL Server,则另一个选项是SQL Profiler。
答案 3 :(得分:0)
以下是log4j.properties中的条目,可用于打印hibernate查询和参数。
log4j.logger.org.hibernate=DEBUG, stdout
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE,stdout