2008-11-11 209 views
3

我在List類型是接口時創建映射時遇到問題。它看起來像我需要創建一個抽象類,並使用鑑別器列是這種情況?我寧願不必因爲抽象類只包含抽象方法而寧願保持接口。JPA映射接口

我有一個接口讓我們稱之爲IT客戶

public interface Account { 
public void doStuff(); 
} 

現在我的賬戶 的兩個具體實現者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 
} 
} 

我有一個類稱爲與清單工作

private List<Account> accounts; 

我期待在鑑別領域,但我似乎只能用於抽象類做到這一點。是這樣嗎?任何指針讚賞。我可以使用鑑別器來接口嗎?

回答

2

我認爲有可能使一個接口超類型的映射。您可能無法使用註釋。註釋在xml配置文件中可以很好地發揮作用,因此您可能必須使用所需的映射將hibernate配置文件添加到項目中。但是您可以保留項目其餘部分的註釋。

This問題的詳細討論它。它似乎最終以一個建議,以及如何與註釋做到這一點,誰知道。我建議xml現在還是比較安全的。這篇文檔的page解釋了所需的xml映射。

+0

感謝您的鏈接感興趣 – 2008-11-12 08:56:30

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() { ... } 
}