首页 > 解决方案 > 我可以使用 JPA 将列配置为可删除吗

问题描述

希望我没有要求太多,但我有一个用例,其中当前正在使用的列需要在不久的将来删除。我想知道我现在是否可以自己处理。

这是更多信息:假设我有一张桌子

 ID | NAME | PHONE | PHONE_ENC

其中 PHONE_ENC(加密电话号码)是要求,预计将在未来使用。在这里,一旦我从使用 PHONE 切换到 PHONE_ENC 并迁移旧记录,我想删除 PHONE 列本身。

这是我可以在不改变 DO 的情况下做的事情吗?这是现在的样子:

@Entity
@Table(name = "CUST")
class Customer {
   @Id
   @Column(name="ID")
   String id;

   @Column(name="NAME")
   String name;

   @Column(name="PHONE")
   String phone;

   @Column(name="PHONE_ENC")
   String encPhone;
}

我希望我可以为 @Column(name="PHONE") 配置类似 droppable 的东西

标签: springhibernatejpaspring-data-jpa

解决方案


简短的回答:不,你不能。

长答案:可能有一种方法,但我强烈建议不要这样做,因为它增加了很多复杂性而收效甚微。

您可以创建映射到单个表的继承层次结构,其中一个子类具有phone列,另一个子类具有phone_enc列。当然,您还需要一个鉴别器列,然后在更新时更新它phone_enc


推荐阅读