【求助】 我想拦截hibernate生成的sql语句
hibernate orm
Object ---》 sql ---》execute ----》 resultset -----》 Obeject
我的意思就是在生成sql语句 且未进入数据库之前 把sql语句改变下
请问有途径么?传授下、谢谢
------解决方案--------------------你可以使用 Query.createSQLQuery 方法解决你需要的吧。。
------解决方案--------------------
看看官方文档吧http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html
还有这篇http://www.iteye.com/topic/866142
主要就是继续EmptyInterceptor,重载onPrepareStatement(sql)方法
------解决方案--------------------insert的參數不是你自己加進去的嗎?直接從你的實體中get出來。
------解决方案--------------------想跟你说怎么做,又怕滥用害了你,还是算了吧。。。。。。
------解决方案--------------------
还是偷偷说吧,其实我觉得主要矛盾不是去破解“参数值”,所以我建议的思路是借助ThreadLocal:
——在准备SQL时,把需要的信息放入ThreadLocal;
——在onPrepareStatement时,取得所需要的信息,然后干你想干的事情。
警告:滥用ThreadLocal可能导致内存泄露等严重后果。
------解决方案--------------------帮顶,没有好的解决办法。