我有A班和B班
public class A{
int f1;
int f2;
int f2;
}
public class B extends A{
}
我的问题是如何在映射到B的表中忽略一个字段,例如' f2'
答案 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
- 希望它有所帮助。