我有以下一组课程
@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注释吗?
答案 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;
...
}