@Override
public EntityAccess createEntityAccess(PersistentEntity entity, Object instance) {
final ProxyFactory proxyFactory = getProxyFactory();
instance = proxyFactory.unwrap(instance);
if(entity != null) {
if (entity.getJavaClass() != instance.getClass()) {
final PersistentEntity subEntity = getPersistentEntity(instance.getClass().getName());
if (subEntity != null) {
entity = subEntity;
}
}
return new FieldEntityAccess(entity, instance, getConversionService());
}
else {
EntityReflector reflector = FieldEntityAccess.getReflector(instance.getClass().getName());
if(reflector != null) {
return new FieldEntityAccess(reflector.getPersitentEntity(), instance, conversionService);
}
else {
return new BeanEntityAccess(null, instance);
}
}
}
}