2011-06-20 259 views
-1

我想知道,从onsave()方法获取参数? 实施例:春季Intreceptor

public boolean onSave(Object entity, Serializable id, Object[] state, 
     String[] propertyNames, Type[] types) 

回答

0

此方法应来自休眠拦截器接口(org.hibernate.Interceptor).Spring可以提供一些内置的豆实现该接口。

当一个新实体首次被休眠会话保存时,应该调用此方法。例如,假设您EMPLOYEE表映射到员工对象,你使用下面的代码创建一个新的雇员记录:

Employee employee = new Employee(); 
employee.setName("Peter"); 
employee.setJoinDate(new Date()); 
employee.setExtNumber(1234); 
/*seesion refer to the Hibernate session*/ 
session.save(employee); 

Hibernate会再生成以下INSERT SQL:

insert into EMPLOYEE (NAME, JOIN_DATE , EXT_NUMBER) values ("Peter" , to_date('2011-6-20') , 1234) 

之前上面的SQL被发布到数据库中,如果有拦截器启用,休眠将使用以下参数调用onSave()方法:

  • 实体:员工参考已保存
  • id:新员工记录的PK
  • state:包含INSERT SQL的不同字段的值的数组(即,包含值“Peter”,新Date(),1234)的数组
  • propertyNames:包含INSERT SQL列的名称(即包含字符串“NAME”,“JOIN_DATE”,“EXT_NUMBER”的数组)的列的数组
+0

谢谢肯.............我想知道一件事情。如果propertyNames无法正确地获取包含coloumns的数组,那么它们的pbm是什么? –