Я делаю инструмент миграции базы данных и имею дело с исходной базой данных, которая очень громоздка. Это в основном один гигантский стол, который имеет более 40-50 столбцов. Однако не все эти столбцы полезны для меня. Мне только может быть около дюжины или около того. Как только я получу эти данные, я делаю запросы к веб-сервису, который будет обрабатывать все на конечной цели миграции.Могу ли я иметь объект, который только сопоставляется с некоторыми столбцами таблицы?
Мои параметры в основном создают запросы вручную, только для выбора столбцов, которые я хочу, или создания объекта, который отображает нужные столбцы. Я не очень разбираюсь в использовании JPA, поэтому я не уверен, что это возможно или хорошо.
Могу ли я сделать что-то вроде
@Entity
class SomeEntity{
@Column(name = "ColumnA")
private String columnA;
@Column(name = "ColumnB")
private String columnB;
}
, если столбцы в базе данных, например
Column A | Column B | Column C | Column D
Волю EclipseLink карту только те столбцы, я аннотировать или будет жаловаться, пытаясь отобразить столбцы db для полей, которые не существуют в моей Entity? Я знаю, @Transient будет отмечать поля, которые не должны сохраняться. Но я хочу сделать обратное и игнорировать столбцы базы данных и лишь частично сопоставить таблицу с классом.
Если они доступны только для чтения, вы можете отображать только несколько столбцов для объектов, без проблем. Выбранными будут только те столбцы, которые вы указали в '@ Entity'. Чтобы быть в безопасности, сделайте сеттеры «защищенными», чтобы обеспечить неизменность на уровне приложения. –
В принципе, да, но вы должны определить '@ Id' (или эквивалент) в любом случае. Нет необходимости создавать представление на уровне базы данных, как это предлагается в принятом ответе. – stg