4

当 List 类型是接口时,我无法创建映射。看起来我需要创建一个抽象类并使用鉴别器列是这种情况吗?我宁愿不必,因为抽象类只包含一个抽象方法,我宁愿只保留接口。

我有一个界面让我们称之为 Account

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; 

我正在查看鉴别器字段,但我似乎只能对抽象类执行此操作。是这样吗?任何指针表示赞赏。我可以对接口使用鉴别器吗?

4

2 回答 2

2

我认为可以使接口成为映射的超类型。但是,您可能无法使用注释。注释可以很好地与 xml 配置文件配合使用,因此您可能必须使用您需要的映射将休眠配置文件添加到您的项目中。但是您将能够为项目的其余部分保留注释。

本期对此进行了更多讨论。它似乎以关于如何使用注释来完成它的建议结束,所以谁知道。我建议 xml 现在仍然更安全 This page of the docs解释了所需的 xml 映射。

于 2008-11-12T01:07:38.273 回答
1

您还可以在不删除接口的情况下引入抽象类。

// 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() { ... }
}
于 2008-11-11T19:28:42.733 回答