我试图在spring + hibernate代码中使用拦截器。
接受者定义如下:
myInterceptor interceptor = new myInterceptor();
SessionFactory sessionFactory = getSessionFactory();
SessionBuilder sessionBuilder = sessionFactory.withOptions();
Session session = sessionBuilder.interceptor(interceptor).openSession();
interceptor.setSession(session);
Transaction tx = session.beginTransaction();
session.merge(member);
tx.commit();
session.close();
我的拦截器配置和使用hibernate dao支持扩展的dao类是
string line;
using (StreamReader file = new StreamReader("one_two.config.txt"))
using (StreamWriter newfile = new StreamWriter("log.txt"))
{
while ((line = file.ReadLine()) != null)
{
newfile.WriteLine(line);
}
}
(我也做SessionFactory配置而不是这个)
第一个问题是我的拦截器的功能除了preFlush和postFlush之外不起作用!
第二个问题是如何将此拦截器用作SessionFactory常规配置,但只能处理我的特定对象而不是所有对象。
答案 0 :(得分:1)
您的拦截器方法onSave,onFlushDirty和onDelete不会在您的代码中调用,因为您不会添加,修改或删除实体。尝试创建,修改和删除托管实体,它将起作用。
您无法为特定实体配置拦截器;你必须在各自的方法中对instanceofs或getClass()。isAssignableFrom()等进行编码,以限制行为。