Java 如何自定义嵌入对象的列名?
我正在尝试使用Spring数据JDBC,我无法理解是否有可能自定义嵌入对象的列名(在JPA中,我们使用Java 如何自定义嵌入对象的列名?,java,spring-data-jdbc,Java,Spring Data Jdbc,我正在尝试使用Spring数据JDBC,我无法理解是否有可能自定义嵌入对象的列名(在JPA中,我们使用@AttributeOverrides) 在我的模型中,我创建了一个类Amount,我想在不同类型的对象中重用它们 public class Amount { private BigDecimal value; private String currency; //getters, settes, contructors } 我想将它像两个嵌入值一样保存在两个表中:ho
@AttributeOverrides
)
在我的模型中,我创建了一个类Amount
,我想在不同类型的对象中重用它们
public class Amount {
private BigDecimal value;
private String currency;
//getters, settes, contructors
}
我想将它像两个嵌入值一样保存在两个表中:houses
和cars
在表houses
中,我希望将这些列命名为house\u price\u value
和house\u price\u currency
。在表cars
中,它们应被称为car\u eval\u value
和car\u eval\u currency
public class House {
@Id
Long id;
int numberOfRooms;
@Embedded
Amount amount;
//other attributes, getters, setters, constructors
}
问题是注释@列
仅适用于属性,应在金额
-类级别上设置。这使得这个类不可重用
在JPA中我会使用此注释,但在JDBC中找不到此注释:
@AttributeOverrides(value = {
@AttributeOverride(name = "value", column = @Column(name = "house_price_value")),
@AttributeOverride(name = "currency", column = @Column(name = "house_price_currency"))
})
我没有看到其他解决方案吗?我认为它应该与
@Embedded
的值
属性一起工作。此值应包含前缀
@Embedded(value = "house_price_")
Amount approvalValue;
这不适合你:@mate00不完全适合。我应该把这些列放在Amount类中,因此我不知道如何为不同的表定制它,并使其可重用。我想我没有这样做。您是否希望在多个表(例如A、B和C)中使用金额,但仅在表A中,您希望列的名称与B和C中的名称不同?@mate00是的,差不多。在所有表中,我希望“value”和“currency”有不同的列名
@Embedded(value = "house_price_")
Amount approvalValue;