Весенний отдых данных с ResourceMetadata.getMappingFor
Пружинный отдых данных Метод ResourceMetadata.getMappingFor неверен
если сущность имеет базовость. ResourceDescription свойства основного объекта получает те же сообщения
введите описание изображения здесь код здесь
private void saveProperty(PersistentProperty<?> property) {
// TODO Auto-generated method stub
String propertyName = property.getName();
String propertyType = property.getType().getName();
PersistentEntity<?, ?> entity = property.getOwner();
String entityName = entity.getName();
String name = entityName + "." + propertyName;
MasterTableEntity masterTableEntity = masterTableDao.getByName(entityName);
MasterPropertyEntity masterPropertyEntity = masterPropertyDao.getByName(name);
if (masterPropertyEntity == null) {
masterPropertyEntity = new MasterPropertyEntity();
masterPropertyEntity.setName(name);
}
ResourceMetadata metadata = resourceMappings.getMetadataFor(entity.getType());
ResourceDescription entityDescription = metadata.getDescription();
String entityMessageCode = entityDescription.getMessage();
masterPropertyEntity.setEntityMessageCode(entityMessageCode);
ResourceMapping propertyMapping = metadata.getMappingFor(property);
ResourceDescription description = propertyMapping.getDescription();
String messageCode = description.getMessage();
masterPropertyEntity.setMessageCode(messageCode);
masterPropertyEntity.setPropertyName(propertyName);
masterPropertyEntity.setPropertyType(propertyType);
masterPropertyEntity.setTable(masterTableEntity);
Field field = property.getField();
Annotation[] annotations = field.getAnnotations();
for (Annotation annotation : annotations) {
if (annotation instanceof Column) {
Column column = (Column) annotation;
masterPropertyEntity.setColumnName(column.name());
masterPropertyEntity.setColumnUnique(column.unique());
masterPropertyEntity.setColumnNullable(column.nullable());
masterPropertyEntity.setColumnInsertable(column.insertable());
masterPropertyEntity.setColumnUpdatable(column.updatable());
masterPropertyEntity.setColumnDefinition(column.columnDefinition());
masterPropertyEntity.setColumnTable(column.table());
masterPropertyEntity.setColumnLength(column.length());
masterPropertyEntity.setColumnPrecision(column.precision());
masterPropertyEntity.setColumnScale(column.scale());
break;
} else if (annotation instanceof JoinColumn) {
JoinColumn joinColumn = (JoinColumn) annotation;
masterPropertyEntity.setColumnName(joinColumn.name());
masterPropertyEntity.setReferencedColumnName(joinColumn.referencedColumnName());
masterPropertyEntity.setColumnUnique(joinColumn.unique());
masterPropertyEntity.setColumnNullable(joinColumn.nullable());
masterPropertyEntity.setColumnInsertable(joinColumn.insertable());
masterPropertyEntity.setColumnUpdatable(joinColumn.updatable());
masterPropertyEntity.setColumnDefinition(joinColumn.columnDefinition());
masterPropertyEntity.setColumnTable(joinColumn.table());
break;
}
}
masterPropertyDao.save(masterPropertyEntity);
}