我有一个具有多个 double 值的实体,其中每个值在存储之前都必须乘以某个因子。
我想使用(单个)JPA 转换器将属性与特定因子相乘,但因此我需要知道我在转换器函数中转换的是哪个属性。
有没有办法在转换器函数中获取属性名称或列名称或将其传递给转换器?
最佳答案
我不知道你的实体是什么样子,但也许 @Access 注释可能会有帮助——当你需要在读取或写入数据库时对数据执行简单转换时可以使用它(在这种情况下乘法在保存之前通过 setter 发生,但 getter 给出存储在 db 中的确切值)。不便之处在于您需要在每个需要此转换的 setter 上添加它:
@Entity
@Access(AccessType.FIELD)
public class Item {
private static final long FACTOR = 5;
@Id
private long id;
private String name;
@Transient
private long amount;
// getter and setters for id and name
@Access(AccessType.PROPERTY)
public long getAmount() {
return amount;
}
public void setAmount(long amount) {
this.amount = amount * FACTOR;
}
}
关于java - 在 JPA 转换器中获取属性名或列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741368/