SpringDataJPA-让实体跟踪有多少实体引用他

SpringDataJPA-让实体跟踪有多少实体引用他,spring,spring-data-jpa,Spring,Spring Data Jpa,好的,基本上我有两个实体,ChatSession和applicationuser。聊天室代表一个聊天室,里面总是有两个人。为了表示聊天室和这两个人,我使用了以下实体: public class ChatSession { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; @ManyToOne ApplicationUser firstUser; @ManyToOn

好的,基本上我有两个实体,ChatSession和applicationuser。聊天室代表一个聊天室,里面总是有两个人。为了表示聊天室和这两个人,我使用了以下实体:

public class ChatSession {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    @ManyToOne
    ApplicationUser firstUser;

    @ManyToOne
    ApplicationUser secondUser;
}
而我的ApplicationUser实体没有任何相关信息:

public class ApplicationUser {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}
这对我来说很有效。但是,当我想为某个用户查找聊天时,我不想查看所有聊天来查找它。我是否可以让ApplicationUser跟踪他参与的所有聊天,因此,当我查找用户参与的聊天时,我只需查看他参与的聊天。我如何使用Spring数据来映射它?我知道我可以有一个:

@OneToMany
List<ChatSessions> listOfChatSessions
@OneToMany
会话列表

但这对我来说似乎不起作用,而且我认为不管怎么说,搜索所有聊天记录都是如此

我认为您对用户/聊天室关系建模的方式存在问题。聊天需要多个用户。一个用户可以有多个聊天室。你真正拥有的是一种多对多的关系。当你正确地建立关系模型时,每个用户都会有一组聊天记录,这是你真正想要的。@TheHeadlush是的,我考虑了很多,但是因为聊天记录中只有两个用户,所以我想尝试一些不同的东西。然而,在这种情况下,我是否可以让实体被多个关系引用(如本例中的applicationUser),跟踪他被引用的实体?如果您只想让一个
用户
实体知道它参与了哪些聊天,请向用户添加一个
@ManyToOne集合
。但是当你的用户要求使用群聊功能时,你会怎么做呢?是的,我可能会转移到manytomy,无论如何manytomone集合对我不起作用,我想它会自动将它添加到用户中,但对于我添加到聊天会话中的用户,该值为空。我似乎引导你走错了路。要使关系双向,需要使用反向注释,因此我应该说使用
@OneToMany
@JoinColumn
。我很抱歉。我认为您对用户/聊天室关系建模的方式有问题。聊天需要多个用户。一个用户可以有多个聊天室。你真正拥有的是一种多对多的关系。当你正确地建立关系模型时,每个用户都会有一组聊天记录,这是你真正想要的。@TheHeadlush是的,我考虑了很多,但是因为聊天记录中只有两个用户,所以我想尝试一些不同的东西。然而,在这种情况下,我是否可以让实体被多个关系引用(如本例中的applicationUser),跟踪他被引用的实体?如果您只想让一个
用户
实体知道它参与了哪些聊天,请向用户添加一个
@ManyToOne集合
。但是当你的用户要求使用群聊功能时,你会怎么做呢?是的,我可能会转移到manytomy,无论如何manytomone集合对我不起作用,我想它会自动将它添加到用户中,但对于我添加到聊天会话中的用户,该值为空。我似乎引导你走错了路。要使关系双向,需要使用反向注释,因此我应该说使用
@OneToMany
@JoinColumn
。我道歉。