我有一个超类,它是一个@Entity
,类似这样的东西:
@Entity
@Table(name = "utente")
public class Utente implements Serializable{
...
}
子类除了以下内容外还只有一个
@Transient
字段:@Entity
public class UtenteSub extends Utente{
@Transient
private String newField;
}
为了使其正常工作,我应该添加
@DiscriminatorValue
,@Inheritance
并在表上添加一个字段。考虑到我在子类中所需的只是一个
@Transient
字段(需要我在表单中“提交”对象Utente后对其进行“检查”),这是很多工作。在我的场景中,有没有更好,更轻松的方法来扩展
@Entity
?谢谢。
最佳答案
您可以尝试创建抽象基类UtenteBase:
@MappedSuperClass
public abstract class UtenteBase implements Serializable
{
//all mapped columns go here
}
您以前在Utente中的所有映射列现在都在此类中。
然后,您可以使用上面提到的两个类来扩展该类:
@Entity
@Table(name = "utente")
public class Utente extends UtenteBase
{
public Utente {}
}
@Entity
@Table(name = "utente")
public class UtenteSub extends UtenteBase
{
@Transient
private String newField;
}
Utente类是具体的实现类,用于与数据库进行通信。
这两个类都在同一个继承树中,您无需添加DiscriminatorValue并更改表。