如何从 Hibernate Criteria 对象中获取绑定参数?

How to get bound parameters out of a Hibernate Criteria object?

我正在运行通过 Hibernate Criteria API 进行复杂查询。在调试期间,我希望能够提取并记录已绑定到条件对象的参数。使用 Hibernate 的 org.Hibernate.type 记录器不是一个选项,因为在服务器启动期间有许多查询 运行 并且记录器会导致严重的性能损失,并且由于我们使用的是 Hibernate 3.5,因此无法配置它在特定方法调用前后开启,仅在服务器启动时开启。

就获取 SQL 查询本身而言,in this answer 有人发布了允许从条件中提取 SQL 的优秀代码,绑定参数是否有类似的解决方案?

您可以记录条件,同时也会显示限制:

Criteria criteria = session.createCriteria(Post.class)
    .add(Restrictions.eq("title", "post"));
LOGGER.info("Criteria: {}", criteria);

将显示:

Criteria: CriteriaImpl(com.vladmihalcea.book.hpjp.hibernate.association.AllAssociationTest$Post:this[][title=post])