При работе с устаревшей базой данных бывают случаи, когда я не могу правильно настроить отношения с помощью аннотации belongs_to
.В этом случае я попытался определить атрибут, указывающий на другой класс Model
, с его методами доступа следующим образом:
@Table("INTERVENTION")
@IdName("ITV_ID")
public class Intervention extends Model {
private InterventionModel interventionModel;
public InterventionModel getInterventionModel() {
return interventionModel;
}
public void setInterventionModel(InterventionModel interventionModel) {
this.interventionModel = interventionModel;
}
}
Я загружаю и устанавливаю InterventionModel
в классе обслуживания без проблем следующим образом(intervention
экземпляр существует):
private void loadInterventionModel(final Intervention intervention) {
final InterventionModel model = InterventionModel.findById(intervention.getLongId());
intervention.setInterventionModel(model);
}
Проблема в том, что он не работает, когда я пытаюсь оценить InterventionModel
атрибуты в шаблоне FreeMarker:
"item_code:": ${intervention.intervention_model.imo_internal_code}
Вотсброшенная ошибка:
FreeMarker template error:
An error has occurred when reading existing sub-variable "intervention_model"; see cause exception! The type of the containing value was: extended_hash+string (app.models.Intervention wrapped into f.e.b.StringModel)
Caused by: java.lang.IllegalArgumentException: Attribute: 'intervention_model' is not defined in model: 'class app.models.Intervention.
Чего мне здесь не хватает и почему она не работает должным образом?Как правило, если я объявлю атрибут в модели с его аксессорами (getter и setter), он будет доступен в шаблоне с помощью:
mymodel.my_attribute