2013-01-31 69 views
3

存儲地圖<字符串,列表 >我試圖存儲 Map<String, List<String>>;使用JPA。 如何使用JPA

我的實體的樣子:

@Entity 
@Table(name = "Profiles_table") 
public class Profiles { 

    @Id 
    @Column(name = "profile_ID", updatable = false, nullable = false) 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    private final HashMap<String, List<String>> AllProfiles; 
    ... 
} 

我已經嘗試了很多設置的地圖,但它不工作...

最後一個我想:

@ElementCollection 
@MapKeyColumn(name = "Profil") 
@Column(name = "Permissions") 
@CollectionTable(name = "Profiles_permissions", joinColumns = @JoinColumn(name = "profile_ID")) 

引發以下例外:

org.hibernate.AnnotationException: Illegal attempt to map a non collection as a 
@OneToMany, @ManyToMany or @CollectionOfElements: [...]Profiles.AllProfiles 

在此先感謝

+0

看看這個問題:http://stackoverflow.com/questions/939235/how-do-i-map-a-nested-collection-mapkey-listvalues-with-hibernate-jpa-anno似乎沒有適當的方法來做到這一點。恐怕你將不得不使用一個自定義類。 –

+0

謝謝,我錯過了,當我搜索!我會看看 – XioRcaL

回答

1

不是一個真正的答案,但是這是方法我已經完成了。

我將第二級集合存儲爲blob。

@Entity 
@Table(name = "Profiles_table") 
public class Profiles { 

@Id 
@Column(name = "profile_ID", updatable = false, nullable = false) 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int         id; 

@Column(length = 16777210) 
private final HashMap<String, Set<String>> AllProfiles; 
1

串不是實體,所以你不應該使用@OneToMany,等...

你有沒有嘗試這個辦法:

@CollectionOfElements 
private Map<String, List<String>> allProfiles; 
+0

無法確定類型:java.util.List,在表中:...... – Nawa