【问题标题】:How to map in Hibernate a qualified association?如何在 Hibernate 中映射一个合格的关联?
【发布时间】:2012-06-13 09:45:41
【问题描述】:

我试图映射这三个类:

@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

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

【问题讨论】:

  • 地图包含多个值。这是一个集合。在 Map 上使用 ManyToOne 是没有意义的。

标签: java hibernate dictionary hibernate-mapping


【解决方案1】:

使用

@OneToMany
private Map<User, Coordinate> labelledIn;

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

更多详情请看这里:2.2.5.3.4. Indexed collections (List, Map)

【讨论】:

  • 我从未在两个实体之间的任何关系中看到Map。你确定它有效吗?
  • @sp00m 看看这里(ch 2.2.5.3.4。索引集合(列表,地图):docs.jboss.org/hibernate/annotations/3.5/reference/en/…
  • 我必须做一个新设计,因为这些类是错误的。无论如何感谢您的回答。你帮助我意识到错误在哪里。
【解决方案2】:

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

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

class Photo {
    @ManyToOne
    private User user;
}

【讨论】:

    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2011-05-23
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多