Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate映射:忽略超类字段_Java_Hibernate_Orm_Hibernate Mapping - Fatal编程技术网

Java Hibernate映射:忽略超类字段

Java Hibernate映射:忽略超类字段,java,hibernate,orm,hibernate-mapping,Java,Hibernate,Orm,Hibernate Mapping,我有a班和B班 public class A{ int f1; int f2; int f2; } public class B extends A{ } 我的问题是如何在映射到B的表中忽略一个字段,例如“f2”?假设我对您的帖子所做的编辑被批准,我将尝试回答。 在下面的代码中,我使用AttributeOverride忽略了类A的字段f2,即B的超类 @Entity @AttributeOverride(name = "f2", column = @Column(name = "f2_col

我有a班和B班

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

public class B extends A{
}

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

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

@Entity
@AttributeOverride(name = "f2", column = @Column(name = "f2_col", insertable = false, updatable = false)
public class B extends A{
}
如果您想进一步了解,请参阅


使用
insertable=false
updateable=false
进行属性覆盖应该会有所帮助,但这也取决于您的继承策略。它只是帮助将从超类继承的映射字段变为临时字段,以便其他子类可以使用它,但对于这个特定的子类它将被忽略。

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

public abstract class MyAbstractClass {
    // ...  
}

public class A extends MyAbstractClass {
    int f1;
}

public class B extends MyAbstractClass {
    int f2;
}

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

您使用的是哪种继承策略??每个类有一张表,每个子类有一张表,或者每个具体类有一张表..?你读过关于transient的书吗?@Amir谢谢。。编辑被批准了。。让我知道这个解决方案是否适合您。这只是给数据库表中的列赋予了不同的名称,但问题是如何忽略它,类似于使用瞬态变量。@Chaitanya谢谢。。但是假设子类和超类都被映射,并且您希望忽略子类中的f2值。。带有insertable=false、Updateable=false的AttributeOverride应有帮助。。但这也取决于你的继承策略。。它只是有助于使映射字段从超类继承。。所以其他子类可以使用它,但它会忽略这个特定的子类。。如果我的理解是错误的,请告诉我。谢谢你的解释,现在对我来说这很有意义:)但是即使你用
false
标记一个字段
insertable
&
updateable
,Hibernate也会在Select语句中出现这样的列。。。不是吗?所以它并不是真正的瞬态!非常感谢你指向@MappedSuperclass,你让我开心!