2011-06-20 255 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是什麼? –