3. Other implementation for MappingDefaults (no need to update it each time a
new field use the OuterJoinStrategy) : 

public class MyMappingDefaults extends PersistenceMappingDefaults {
    Map<String,Object> fieldsStrategies;
    
    public Object getStrategy(ValueMapping vm, Class type, boolean adapt) { 
        if
(!getFieldsStrategies().containsKey(vm.getFieldMapping().getFullName(true)))
{
            Class declaringClass = vm.getFieldMapping().getDeclaringType();
            String filedName = vm.getFieldMapping().getName();
            
            Field field = null;
            Strategy strategy = null;
            try {
                field = declaringClass.getDeclaredField(filedName);
                strategy = field.getAnnotation(Strategy.class);  
                
            } catch (Exception e) {
                // nothing to do, strategy remains null
            } 
            
            if (null == strategy) {
                fieldsStrategies.put(vm.getFieldMapping().getFullName(true), 
                        super.getStrategy(vm, type, adapt));
            }
            else {
                try {
                    System.out.println("Set strategy for field '" +
vm.getFieldMapping().getFullName(true) 
                            + "' : " + strategy.value());
                   
fieldsStrategies.put(vm.getFieldMapping().getFullName(true), 
                            Class.forName(strategy.value()).newInstance());
                } catch (Exception e) {
                    e.printStackTrace();
                   
fieldsStrategies.put(vm.getFieldMapping().getFullName(true), 
                            super.getStrategy(vm, type, adapt));                
    
                }            
            }
           
        }        

        return
getFieldsStrategies().get(vm.getFieldMapping().getFullName(true)); 
    }

    public Map<String, Object> getFieldsStrategies() {
        if (null == fieldsStrategies) {
            fieldsStrategies = new HashMap<String, Object>();
        }
        return fieldsStrategies;
    } 
    
    
}
-- 
View this message in context: 
http://n2.nabble.com/Need-OUTER-JOIN-to-SecondaryTable-tp210713p1344503.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to