从JPA中的嵌入类创建一个可嵌入类的字段瞬态

时间:2012-09-28 17:24:59

标签: java hibernate jpa orm annotations

我有以下一组课程

@Embeddable
public class SharedClass {
    ...
    private String legacyField;
    ...
}

@Entity
public class LongStandingEntity {
    ...
    private SharedClass sharedClass;
    ...
}

其中legacyfield在旧对象中存储一些过时数据,但不为新对象收集。但是,我确实需要能够继续访问旧数据。

我正在创建一个也使用SharedClass

的新实体
@Entity
public class NewEntity {
    ...
    private SharedClass sharedClass;
    ...
}

它不需要legacyField,我希望避免在数据库中为其添加列,同时保持映射适用于LongStandingEntity

这可以通过JPA注释吗?

2 个答案:

答案 0 :(得分:1)

我不记得可以帮助你的特定注释。在这种情况下,我宁愿采取一种设计方法。如果您的字段仅属于某个类,则将它们分隔在另一个仅与旧数据相关联的可嵌入类中。

对我来说似乎更清洁,只是为了让实体明显不同。

答案 1 :(得分:1)

我发现的一个解决方法是覆盖与insertable = false和updatable = false参数的关联。

@Entity
public class NewEntity {
    ...
    @Embedded
    @AssociationOverride(name = "legacyField", joinColumns = @JoinColumn(insertable = false, updatable = false))
    private SharedClass sharedClass;
    ...
}