我有一个超类,它是一个@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并更改表。

10-06 06:21