Hibernate 映射:忽略超级 class 字段

Hibernate mapping: ignore a super class field

我有一个 class A 和 class B

public class A{
int f1;
int f2;
int f2;
}

public class B extends A{
}

我的问题是如何忽略映射到 B 的 table 中的字段,例如 'f2'?

假设我对您的 post 所做的编辑获得批准,我将尝试回答。 在下面的代码中,我忽略了来自 class A 的字段 f2,即使用 AttributeOverride.

的 B 的 superclass
@Entity
@AttributeOverride(name = "f2", column = @Column(name = "f2_col", insertable = false, updatable = false)
public class B extends A{
}

如果您想进一步了解它,请参阅 AttributeOverride

AttributeOverride with insertable = false, updatable = false 应该会有帮助,但这也取决于你的继承策略。它只是帮助使从 superclass 继承的映射字段成为瞬态,以便其他一些 subclass 可以使用它,但对于这个特定的 subclass.

它将被忽略

如果你想有条件地将字段应用到子类,也许你应该重新设计你的类,使它们看起来像这样

public abstract class MyAbstractClass {
    // ...  
}

public class A extends MyAbstractClass {
    int f1;
}

public class B extends MyAbstractClass {
    int f2;
}

假设您将此应用到数据库 table 与 Hibernate 的映射,您可以在 MyAbstractClass 上使用 @MappedSuperclass 并在 A 和 B 上使用 @Entity - 希望它有所帮助。