【发布时间】:2013-05-06 05:58:56
【问题描述】:
有没有办法从session.get(class name, id) 调用中获取 SQL 查询?我之前看过这个帖子:How to get SQL from Hibernate Criteria API (*not* for logging),但它不包括 get 查询。
澄清:我正在寻找一种 API 方法来获取查询字符串,而不是从查询日志中获取。换句话说,我在问是否有一种方法(例如下面的toSql)而不是:
Foo foo = session.get(Foo.class, id);
我可以这样说:
String sqlOrHql = session.get(Foo.class, id).toSql();
// execute sqlOrHql to get foo, either through hibernate or manually using JDBC
【问题讨论】:
-
请注意,它应该比从条件查询中获取 SQL 更复杂,原因如下: 1)如果您的实体与其他实体有关系,那么 get(clazz,id) 可以执行多个 SQL陈述。 2)如果你有延迟加载,那么有可能你拿到实体的时候并不是所有的语句都被执行。