3

我正在尝试使用 Spring Data JDBC,但我无法理解是否可以自定义嵌入对象的列名(在 JPA 中我们@AttributeOverrides用于此目的)。

在我的模型中,我创建了一个类Amount,我想在不同类型的对象中重用它们。

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

   //getters, settes, contructors
}

我想将它保存为两个表中的 2 个嵌入值:housescars.

在表中houses,我希望调用列house_price_valuehouse_price_currency。在表中cars它们应该被称为car_eval_valueand 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-class级别设置。这使得这个类不可重用。

在 JPA 中我会使用它,但在 JDBC 中找不到此注释:

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

我没有看到另一个解决方案吗?

4

1 回答 1

1

我认为它应该value@Embedded. 这个值应该包含一个前缀。

@Embedded(value = "house_price_")
Amount approvalValue;
于 2019-04-16T09:29:02.530 回答