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.