1

我试图映射这三个类:

@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

我可以在我的数据库中映射这个合格的关联吗?如果我不能,我该如何以不同的方式做到这一点?

4

2 回答 2

2

采用

@OneToMany
private Map<User, Coordinate> labelledIn;

相反@ManyToOne。正如@JB Nizet 所说,与集合建立多对一关系是没有意义的。

有关更多详细信息,请查看此处:2.2.5.3.4。索引集合(列表、地图)

于 2012-06-13T09:52:14.417 回答
0

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

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

class Photo {
    @ManyToOne
    private User user;
}
于 2012-06-13T09:50:48.997 回答