是否可以在集合中同时使用 Spring 对象和属性?

Is it possible to use a Spring Object in a set and as an attribute at the same time?

我认为解释比提问更容易。我找不到执行以下操作的公式:

假设我们有一个 PHOTO 对象。一方面,我们有一个 NEWS 对象,它有一个带有 @OneToOne 关系的 PHOTO 对象。另一方面,我们有一个 PROFILE 对象,它有一个 avatar 属性,它是一个 PHOTO 对象,也有一个 @OneToOne 关系。同时,我希望PROFILE有一个ALBUM对象,它是一组具有@OneToMany关系的PHOTO对象。

Hibernate 不允许我在同一个 PHOTO 对象上共享 @OneToOne 和 @OneToMany 关系。我认为它不能使用相同的 table 将 PHOTO 对象同时保存在 @OneToOne 和 @OneToMany 关系中。

有人可以向我解释原因或解决问题的替代方法....

谢谢

如果您想在不同的实体中使用 Photo 实体,请保持 Photo 实体独立并将任何关系存储在使用 Photo 实体的实体或映射 table。在您的情况下,您可以使用以下结构。

class Profile {

    @oneToOne
    @JoinColumn(name="avatar")
    Photo avatar;

    @OneToMany
    @JoinTable(name="profile_album",joinColumns=@JoinColumn(name="profile_id"),inverseJoinColumns=@JoinColumn(name="photo_id"))
    Set<Photo> album;
}

你的 table 结构将是这样的。

photo - id, ...
profile - id, avatar (references photo id), ...
profile_album - profile_id, photo_id // mapping table