如何在Hibernate中映射一个合格的关联?

时间:2012-06-13 09:45:42

标签: java hibernate dictionary hibernate-mapping

我试图映射这三个类:

@Entity
class Photo {
...
@ManyToOne
private Map<User, Coordinate> labelledIn;
...
}

@Entity
class User {
...
@OneToMany (mappedBy ="labelledIn") 
private Set<Photo> labelledPhotos;
...
}

@Embedded 
class Coordinate { ... }

我收到了这个错误:

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

我可以在数据库中映射此限定关联吗?如果我不能,我怎么能以不同的方式做到这一点?

2 个答案:

答案 0 :(得分:2)

使用

@OneToMany
private Map<User, Coordinate> labelledIn;

代替@ManyToOne。 正如@JB Nizet所说,与集合建立多对一关系毫无意义。

有关详细信息,请查看此处:2.2.5.3.4. Indexed collections (List, Map)

答案 1 :(得分:0)

这种关系只能引用其他JPA实体。如果你想要one user -> many photosone photo -> one user,你必须尝试这样的事情:

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

class Photo {
    @ManyToOne
    private User user;
}