我试图映射这三个类:
@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
我可以在数据库中映射此限定关联吗?如果我不能,我怎么能以不同的方式做到这一点?
答案 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 photos
和one photo -> one user
,你必须尝试这样的事情:
class User {
@OneToMany
private Set<Photo> photos;
}
class Photo {
@ManyToOne
private User user;
}