当List类型是接口时,我在创建映射时遇到问题。看起来我需要创建一个抽象类并使用鉴别器列就是这种情况?我宁愿不必,因为抽象类只包含一个抽象方法,我宁愿保留接口。
我有一个界面让我们称之为帐户
public interface Account {
public void doStuff();
}
现在我有两个Account的具体实现者 OverSeasAccount和OverDrawnAccount
public class OverSeasAccount implements Account {
public void doStuff() {
//do overseas type stuff
}
}
和
public class OverDrawnAccount implements Account {
public void doStuff() {
//do overDrawn type stuff
}
}
我有一个名为Work with a List
的课程private List<Account> accounts;
我正在查看discriminator字段,但我似乎只能在抽象类中执行此操作。是这样的吗?任何指针赞赏。我可以在接口上使用鉴别器吗?
答案 0 :(得分:2)
我认为可以使接口成为映射的超类型。您可能无法使用注释。注释适用于xml配置文件,因此您可能必须使用所需的映射将hibernate配置文件添加到项目中。但是你可以保留项目其余部分的注释。
This问题更多地讨论了它。它似乎以一个关于如何使用注释来做到这一点的建议结束,所以谁知道。我建议xml现在仍然更安全这个文档的page解释了所需的xml映射。
答案 1 :(得分:0)
您也可以在不删除界面的情况下引入抽象类。
// not an entity
public interface Account {
public void doStuff();
}
@Entity
public abstract class BaseAccount {
public void doStuff();
}
@Entity
public class OverSeasAccount extends AbstractAccount {
public void doStuff() { ... }
}
@Entity
public class OverDrawnAccount extends AbstractAccount {
public void doStuff() { ... }
}