Java 休眠@AttributeOverride和@ColumnTransformer

Java 休眠@AttributeOverride和@ColumnTransformer,java,hibernate,jpa,hibernate-mapping,Java,Hibernate,Jpa,Hibernate Mapping,我正在学习Hibernate/JPA,并对其进行一些练习。所以我的任务是映射这个实体: @Entity public class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Embedded @AttributeOverride(name = "priceInUSD", column = @Column(name = "start_pri

我正在学习Hibernate/JPA,并对其进行一些练习。所以我的任务是映射这个实体:

@Entity
public class Item {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Embedded
    @AttributeOverride(name = "priceInUSD", column = @Column(name = "start_price_in_uah"))
    private Price startPrice;

    @Embedded
    @AttributeOverride(name = "priceInUSD", column = @Column(name = "end_price_in_uah"))
    private Price endPrice;
}
这是我的可嵌入类:

@Embeddable
public class Price {
    @Column(name = "price_in_uah")
    @org.hibernate.annotations.ColumnTransformer(
            read = "{dont_know_what_to_put_here} * 0.039",
            write = "? / 0.039")
    private int priceInUSD;
}
在我的DB中,我将价格存储在UAH中,在我的Java代码中,我将价格存储在USD中。 我知道这是一个有点愚蠢的例子,但仍然

问题是当我使用hibernate的
@ColumnTransformer
时,我必须在
read
属性中指定列名(如“price_in_uah*0.039”),但由于
@AttributeOverride
注释,列 名字可以改变


所以,我可以用什么来代替
{don_know__放什么在这里}
标签?

因为汇率随时间变化,强烈建议不同的解决方案。很难修复实体中的DB设计问题(我也很惊讶'int')顺便说一句,正式建议(可能在下一个项目中)最大限度地使用可移植JPA是的,我应该尝试另一种解决方案。我很好奇你是否可以指定列名。使用“int”来存储“money”是我朋友的建议。是的,将其乘以“0.039”看起来很奇怪。但这不是一个真正的项目。我只是在尝试hibernate的“@ColumnTransformer”功能,因为汇率随时间变化,强烈建议采用不同的解决方案。很难修复实体中的DB设计问题(我也很惊讶'int')顺便说一句,正式建议(可能在下一个项目中)最大限度地使用可移植JPA是的,我应该尝试另一种解决方案。我很好奇你是否可以指定列名。使用“int”来存储“money”是我朋友的建议。是的,将其乘以“0.039”看起来很奇怪。但这不是一个真正的项目。我只是在尝试hibernate的“@ColumnTransformer”功能