一尘不染

Hibernate和Spring修改查询,然后提交给DB

hibernate

我有一个配置为使用Spring
Data(@Repository)注释执行的Hibernate查询。我想在将查询提交给数据库之前捕获该查询,并在满足特定条件时对其进行一些修改。

这样做的最佳选择是什么?我更喜欢JPA解决方案而不是Hibernate解决方案,但是Hibernate解决方案也可以使用。


阅读 213

收藏
2020-06-20

共1个答案

一尘不染

如果要在准备好的语句之后修改查询,可以将其放入Hibernate Interceptor中,并在Spring DB Configuration中进行注册。

您的MyInterceptor应该实现Hibernate
Interceptor.class或扩展EmptyInterceptor.class。您正在寻找的方法是:

public String onPrepareStatement(String sql);

如果您还需要其他功能,可以尝试使用事件监听器,但是我不确定您的情况是否合适。

这里有一些文档:

Hibernate 4.0拦截器和事件如何将拦截器与Spring集成

2020-06-20