Как можно сопоставить свойство с определенным столбцом другой таблицы с помощью JPA? - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть две таблицы.У одного есть данные, которые меня беспокоят, «Вещи».Схема Thing:

  • thing_id
  • name
  • thing_type_id
  • ... метаданные (включая даты создания и изменения)

'thing_type_id' - это внешний ключ для другой таблицы, которая в основном действует как перечисление.

Схема ThingType:

  • thing_type_id
  • name
  • ... метаданные

Я создал классы для обоих, и я могу легко объединить их, используя

@ManyToOne() @JoinColumn(name = "thing_type_id") private ThingType thingType;

, чтобы связатьОбъект ThingType с каждым Thing.Тем не менее, единственным релевантным полем является ThingType.name.

Что я хочу сделать, так это ссылаться на строку напрямую, например

@Column(table = "thing_type" name="name") private String thingType;

Подходы I 'мы пробовали

  • Использование аннотации @SecondaryTable в классе Thing, похоже, работает только для однозначного сопоставления.
  • @JsonIgnore во всех несущественных полях ThingType оставляет меня с объектом, содержащим только одну запись, а не только значение этой записи.
  • Объединение всего объекта, как описано выше, @JsonIgnoring его и создание getter для этого поля, которое каким-то образом отображается на вывод JSON, должно работать, но я не уверен, как это сделать.

Спасибо за помощь!

1 Ответ

0 голосов
/ 20 ноября 2018

Разобрался.Третий подход работает.

@JsonIgnore @ManyToOne() @JoinColumn(name = "thing_type_id") private ThingType thingType;

@JsonProperty("thingType") String getThingType() { return this.thingType.getName(); }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...