我正在尝试使用Spring Data JDBC,但我不明白是否可以自定义嵌入对象的列名(在JPA中,我们为此使用@AttributeOverrides
)。
在我的模型中,我创建了一个类Amount
,我想在不同类型的对象中重用它们。
public class Amount {
private BigDecimal value;
private String currency;
//getters, settes, contructors
}
我想像两个嵌入值一样将其保存在两个表中: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"))
})
我没有看到其他解决方案吗?
答案 0 :(得分:1)
我认为它应该与value
的{{1}}属性一起使用。此值应包含前缀。
@Embedded