Hibernate映射:忽略超类字段

时间:2015-04-27 11:28:54

标签: java hibernate orm hibernate-mapping

我有A班和B班

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

public class B extends A{
}

我的问题是如何在映射到B的表中忽略一个字段,例如' f2'

2 个答案:

答案 0 :(得分:4)

我会尝试回答假设我对您的帖子进行的编辑已获批准。 在下面的代码中,我忽略了A类中的字段f2,即使用AttributeOverride的B的超类。

$_ENV['variable_name']

如果您想进一步阅读,请参阅AttributeOverride

带有@Entity @AttributeOverride(name = "f2", column = @Column(name = "f2_col", insertable = false, updatable = false) public class B extends A{ } 的AttributeOverride,insertable = false应该会有所帮助,但这也取决于您的继承策略。它只是帮助使从超类瞬态继承的映射字段,以便其他一些子类可以使用它,但它将被忽略这个特定的子类。

答案 1 :(得分:2)

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

public abstract class MyAbstractClass {
    // ...  
}

public class A extends MyAbstractClass {
    int f1;
}

public class B extends MyAbstractClass {
    int f2;
}

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