如何自定义嵌入对象的列名?

时间:2019-04-16 07:35:58

标签: java spring-data-jdbc

我正在尝试使用Spring Data JDBC,但我不明白是否可以自定义嵌入对象的列名(在JPA中,我们为此使用@AttributeOverrides)。

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

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

   //getters, settes, contructors
}

我想像两个嵌入值一样将其保存在两个表中:housescars

在表houses中,我希望这些列分别称为house_price_valuehouse_price_currency。在表cars中,它们应分别称为car_eval_valuecar_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 个答案:

答案 0 :(得分:1)

我认为它应该与value的{​​{1}}属性一起使用。此值应包含前缀。

@Embedded