Revision c6a0721d
Added by Andreas Müller almost 8 years ago
- ID c6a0721db1da86894a25afad447639cf60cb78a0
- Parent ed77d49a
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImpl.java | ||
---|---|---|
294 | 294 |
makePropertyType(result, referencedClass, sessionFactory, cdmClass, elType, propertyName, true); |
295 | 295 |
}else if (propertyType.isAnyType()){ |
296 | 296 |
// AnyType anyType = (AnyType)propertyType; |
297 |
Field field = cdmClass.getDeclaredField(propertyName);
|
|
297 |
Field field = getDeclaredFieldRecursive(cdmClass, propertyName);
|
|
298 | 298 |
Class<?> returnType = field.getType(); |
299 | 299 |
if (returnType.isInterface()){ |
300 | 300 |
logger.debug("There is an interface"); |
... | ... | |
334 | 334 |
|
335 | 335 |
} |
336 | 336 |
|
337 |
private boolean makeSingleProperty(Class<?> itemClass, Class<?> type, String propertyName, Class cdmClass, Set<ReferenceHolder> result,/*CdmBase item,*/ boolean isCollection){ |
|
337 |
/** |
|
338 |
* @param cdmClass |
|
339 |
* @param propertyName |
|
340 |
* @return |
|
341 |
*/ |
|
342 |
private Field getDeclaredFieldRecursive(Class<? extends CdmBase> cdmClass, String propertyName) { |
|
343 |
for (Field field : cdmClass.getDeclaredFields()){ |
|
344 |
if (field.getName().equals(propertyName)){ |
|
345 |
return field; |
|
346 |
} |
|
347 |
} |
|
348 |
Class<?> superClass = cdmClass.getSuperclass(); |
|
349 |
if (superClass == Object.class){ |
|
350 |
throw new IllegalStateException("Field not found in class hierarchy: " + propertyName); |
|
351 |
}else{ |
|
352 |
return getDeclaredFieldRecursive((Class<? extends CdmBase>)superClass, propertyName); |
|
353 |
} |
|
354 |
} |
|
355 |
|
|
356 |
private boolean makeSingleProperty(Class<?> itemClass, Class<?> type, String propertyName, Class cdmClass, Set<ReferenceHolder> result,/*CdmBase item,*/ boolean isCollection){ |
|
338 | 357 |
// String fieldName = StringUtils.rightPad(propertyName, 30); |
339 | 358 |
// String className = StringUtils.rightPad(cdmClass.getSimpleName(), 30); |
340 | 359 |
// String returnTypeName = StringUtils.rightPad(type.getSimpleName(), 30); |
Also available in: Unified diff
Preliminary changes for FK problem on sourcedObj_id using common base
class #5534, later reverted due to #5743