当前位置: 首页 > 知识库问答 >
问题:

JPA:如何处理多个实体

尚嘉庆
2023-03-14

我是JPA的新手,有一个关于如何处理实体的问题。在我的例子中,我有3个实体:用户、组和事件。

一个事件总是属于一个组。这意味着有一个OneToMulti-Relation。一个用户可以订阅多个组,这意味着有一个ManyToMulti-Relation。现在我遇到麻烦的部分。一个用户也可以订阅多个事件,这意味着也有一个ManyToMulti-Relation。

@Entity
public class User {

    @Id
    @GeneratedValue
    private Integer id;

    @Embedded
    @OneToOne
    @JoinColumn(name = "company_location")
    private CompanyLocation companyLocation;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(
            name = "user_group_subscriptions",
            joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(name = "group_id", referencedColumnName = "id"))
    private List<Group> subscribedGroups;
    ...
}
@Entity
public class Group {

    @Id
    @GeneratedValue
    private Integer id;

    @OneToMany(???)
    private List<Event> events;
    ...
}

现在我的问题是。我如何在我的组实体中列出一个依赖于用户实体的可疑事件列表?我的目标是这样的:

user.getSubscribedGroups().get(0).getSubscribedEvents();

共有1个答案

栾烨华
2023-03-14

试试这个 :

@Entity
public class Event{

@Id
@GeneratedValue
private Integer id;

@ManyToOne
@JoinColumn(name = "your_column")
private Group group;

@ManyToMany
@JoinTable(....)
private List<User> users;

...

}

@Entity
public class Group {

@Id
@GeneratedValue
private Integer id;

@OneToMany(mappedBy = "group")
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Event> events;

...
}
 类似资料:
  • 这是我的Compose.yml 我遇到一些问题,当发送消息到服务器时,server1显示连接,并显示GET消息,但下次发送时,server2显示GET消息 如何使其成为“我连接的服务器就是我发送消息到的服务器”?

  • 问题内容: 我无法理解与以下情况相关的这种基本机制。 我有一个spring网络应用程序。现在,我将模型自动连接到控制器中。基于url匹配,它将调用相应的方法。我所有的方法都是单例。 现在,当两个用户同时打开应用程序时,spring可以并行运行它们并为他们提供结果。我不明白它怎么做。我的意思是因为bean是单例的,所以必须等到不使用bean或覆盖bean中的数据。但是弹簧工作正常。有人可以用一些类比

  • 在我的项目中,我使用slf4j和logback作为后端日志记录框架,但是有很多依赖项使用log4j作为日志记录框架,所以发现slf4j有多个绑定,我该如何处理呢?如果我排除了不想要的slf4j-log4j依赖项,框架或库本身会正确地处理日志记录吗?

  • 但我得到了NullPointerException任何人都可以帮忙

  • 我对Spring Data JPA不太感兴趣,在Spring Boot项目中我遇到了以下问题。 对于如何正确处理这种情况,我有以下架构上的疑问: 我有一个由这样的接口实现的存储库,我在其中定义了我的“查询方法”: 如您所见,我正在扩展Crudepository接口,并指定了一个名为**Country*的模型类,映射数据库中的特定表。 我添加了第二个方法,用于映射不同的数据库表的另一个实体类(Blo

  • 我已经为TextInput创建了公共类,并多次使用它,但它的事件处理方法相同。我想在TextInput中填充数据后处理数组数据。 这里添加了多个textField和单个。如何标识哪个textInput调用了。 根据数组数据动态添加的textField组件。现在,当用户编辑textInput时,我希望在特定索引上标识textInput和更新的数组文本。