, но если имя столбца отличается от поля в pojo, оно не отображается
Очевидно, что это не сработает, поскольку ваш код написан для этой цели, когда обаимена совпадают, поэтому я не понимаю элемент неожиданности.
Единственный выход, который я могу придумать, - это вторичная глобальная карта имени поля с именем столбца БД, и вы обращаетесь к нему, как только columnNames.containsKey(fieldName)
ложно.Эта карта - ручная работа, и эта ручная работа всегда будет там, поскольку только вы, как разработчик, знаете, какой столбец соответствует какому полю в POJO.Это не может быть автоматизировано, если оба они различны, а внешнее сопоставление необходимо передавать в программу Java.
Это отображение можно сохранить во внешнем файле свойств.
Существуют такие API-интерфейсы, как apache-commons-dbutils , но и ручное сопоставление не исчезнет, поскольку вы должны будете указать это в своем пользовательском файле - org.apache.commons.dbutils.BeanProcessor
Что-то еще можно сделать в строках инструментов генерации сущностей JPA, где мы присоединяем что-то вроде ниже к полям POJO -
@Column(name = "ADDRESS_IND")
private String addressInd;
, но это опять-таки ручная работачто касается спецификации картографирования.Я думаю, вы можете получить значение аннотации и построить свое отображение.
Как получить имя класса аннотации, значения атрибутов, используя отражение