Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 2.0
-
Fix Version/s: 2.1-RC1
-
Component/s: None
-
Labels:None
-
Environment:Windows 2000, Hibernate 2.1.4
-
Number of attachments :
Description
Using the pattern execution(* path.to.class..(..) in a pointcut causes interaction problems with Hibernate collections. In particular, the Hibernate collection believes it is dirty and tries to persist as soon as it is loaded, even though it is not dirty.
From my testing, it appears that the single '*' used to select all classes is the culprit. Specifying a class name, or even a partial class name, does not cause problems. The following all seem to work fine:
execution(* path.to.class.Class.method(..))
execution(* path.to.class.Class.*(..))
execution(* path.to.class.Class*.*(..))
whereas these patterns cause the Hibernate problem:
execution(* path.to.class..(..))
execution(* path.to.class.*.method(..))
I don't understand the internals, but from mailing list messages, it appears the problem has to do with capturing of CGLIB generated inner class's methods.
Thanks Steven.
Could you mail me the generated cglib classes?
If you turn on the dump option for online mode then all transformed classes (including the generated ones) will get dumped in ./_dump dir.
-Daspectwerkz.transform.dump=*
Please zip this dir (or the interesting classes) and mail it to me.
With the names of the classes that fails.
Thanks.