I've got the following issue that I am trying to solve with AspectJ. Given an entity class with a null @Embedded field, when trying to access it with a getter, instantiate it first if it is null.
For example: @Entity public class MyClass { @Id private long id; @Embedded private Validity validity; } And Validity: @Embeddable public class Validity{ private long from; private long to; } I'm having trouble figuring out how to best write the before() advice however. Ideally, I'm trying to avoid using reflection for fear of slowing things down, but so far, the best I have been able to come up with is the following: // define a pointcut for any getter method of a field with @Embedded of type Validity with any name in com.ia.domain package pointcut embeddedGetter() : get( @javax.persistence.Embedded com.ia.domain.Validity com.ia.domain..* ); before() : embeddedGetter(){ String fieldName = thisJoinPoint.getSignature().getName(); Object obj = thisJoinPoint.getThis(); // check to see if the obj has the field already defined or is null try{ Field field = obj.getClass().getDeclaredField(fieldName); field.setAccessible(true); if( field.get(obj) == null ) field.set(obj, new com.ia.domain.Validity() ); } catch( IllegalAccessException | NoSuchFieldException e){} } Is there a better way? Thanks, Eric
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/aspectj-users