2014-10-08 52 views
0

我的數據庫中有一些表格代表Java Map s。他們有兩列(key和value):如何使用Hibernate將表映射到Map?

+---+-------+---------+ 
| | Key | Value | 
+---+-------+---------+ 
| 1 | key-1 | value-1 | 
| 2 | key-2 | value-2 | 
| 3 | key-3 | value-3 | 
| 4 | key-4 | value-4 | 
| 5 | key-5 | value-5 | 
+---+-------+---------+ 

現在假設我有這個類:

public class MyClass { 

    private Map<String, String> params; 

    public Map<String, String> getParams() { 
     return params; 
    } 

    public void setParams(Map<String, String> params) { 
     this.params = params; 
    } 

} 

我怎麼能映射表來使用JPA/Hibernate的註解params變量?

P.S.

我不知道這是否是重要的,但我想HashMap子類的params,使之成爲這樣的:

public class Params extends HashMap<String, String> { 

} 

public class MyClass { 

    private Params params; 

    public Params getParams() { 
     return params; 
    } 

    public void setParams(Params params) { 
     this.params = params; 
    } 

} 
+0

當您從包含您的密鑰和值的表中獲取時,您將獲得一個實體列表。在這種情況下,我認爲它不可能通過註釋生成地圖。基本上你會有你的鍵值對的列表,但在不同的對象。所以你可以使用它。 – 2014-10-08 07:01:38

+0

@javadev hibernate查詢返回'List' http://stackoverflow.com/a/417029/892994 – erencan 2014-10-08 07:09:49

+0

是列表。我說的是鍵值將會出現在對象的單獨變量中。但他們會在場。 – 2014-10-08 07:12:42

回答

0

我已經找到了解決辦法。它只能使用JPA註釋完成。這裏是代碼:

@ElementCollection(fetch = FetchType.EAGER) 
@CollectionTable(name = "module_parameter") 
@MapKeyColumn(name = "key") 
@Column(name = "value") 
private Map<String, String> params = new HashMap<>();