Как настроить имена столбцов внедренного объекта? - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь использовать JDBC Spring Data и не могу понять, есть ли возможность настроить имена столбцов внедренного объекта (в JPA мы используем @AttributeOverrides для этого).

В моей модели я создал класс Amount, который я хотел бы использовать в различных типах объектов.

public class Amount {
    private BigDecimal value;
    private String currency;

   //getters, settes, contructors
}

Я хотел бы сохранить его как 2 встроенных значения в двух таблицах: houses и cars.

В таблице houses я хочу, чтобы столбцы назывались house_price_value и house_price_currency. В таблице cars они должны называться car_eval_value и car_eval_currency.

public class House {
      @Id
      Long id;
      int numberOfRooms; 
      @Embedded
      Amount amount;

   //other attributes, getters, setters, constructors
}
public class Car {
      @Id
      Long id;
      String model;
      @Embedded
      Amount amount;

   //other attributes, getters, setters, constructors
}

Проблема в том, что аннотация @Column применима только к атрибуту и ​​должна быть установлена ​​на уровне класса Amount. что делает этот класс не пригодным для повторного использования.

В JPA я бы использовал это, но в JDBC эта аннотация не найдена:

@AttributeOverrides(value = {
    @AttributeOverride(name = "value", column = @Column(name = "house_price_value")),
    @AttributeOverride(name = "currency", column = @Column(name = "house_price_currency"))
})

Разве я не вижу другого решения?

1 Ответ

1 голос
/ 16 апреля 2019

Я думаю, что он должен работать с value атрибутом @Embedded.Это значение должно содержать префикс.

@Embedded(value = "house_price_")
Amount approvalValue;
...