springAOP後對象代理和hibernate不識別問題

場景:自定義註解,AOP攔截,處理前置業務。然後從spring中getBean,然後將此bean存入數據庫,將報noMapping entity錯誤。

原因:AOP攔截,因爲bean不是用的接口,AOP將動態代理此bean。如果從spring中getBean,那麼spring將掃描此bean,發現註解,然後代理此對象。因爲spring都是新產生的對象,採用prototype的形式。那麼當前對象將轉變成代理對象,hibernate的映射嚴格對照xml,將不認識此代理對象,報錯。

解決:AOP攔截接口;在方法中new一個新對象,將代理對象的值拷貝到新對象中,再持久化;避免將該對象持久化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章