2012-06-13 34 views
1

我想這三類地圖:如何在Hibernate中映射一個合格的關聯?

而且我得到這個錯誤:

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.redex.model.Photo.labelledIn references an unknown entity: java.util.Map 

我可以映射在我的數據庫這個限定關聯?如果我不能,我怎樣才能以不同的方式做到這一點?

+0

地圖包含多個值。這是一個集合。在地圖上有一個ManyToOne是沒有意義的。 –

+0

OneToMany ... – sp00m

回答

2

使用

@OneToMany 
private Map<User, Coordinate> labelledIn; 

代替@ManyToOne。正如@JB Nizet所說,與集合建立多對一關係毫無意義。

欲瞭解更多的細節看看這裏:2.2.5.3.4. Indexed collections (List, Map)

+0

我從來沒有在兩個實體之間的任何關係中看到過一個Map。你確定它有效嗎? – sp00m

+0

@ sp00m看一看(ch 2.2.5.3.4。索引集合(List,Map):http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-協會 – tibtof

+0

你是對的,有趣!謝謝':)' – sp00m

0

這種關係只能引用其他JPA實體。如果你想one user -> many photosone photo -> one user,你一定要試試這樣的:

class User { 
    @OneToMany 
    private Set<Photo> photos; 
} 

class Photo { 
    @ManyToOne 
    private User user; 
}