如何在两个实体之间创建多对多链接并将数据保存在数据库中

问题描述 投票:0回答:0

抱歉,如果这不是我应该在这里问的问题类型,但我找不到我要找的东西。

我正在开发一个应该写入下表的 Spring Boot 应用程序:

quote_table
带有一个
request_id
列,其中可以有多个具有相同
request_id
的行,一个
messages_table
和一个
quote_messages_link_table
通过
quote_table.request_id
 之间的多对多关系连接表quote_messages_link_table.request_id
messages_table.id and 
quote_messages_link_table.messages_id`之间的一对一链接。

为此,我有一个 Quotes 实体和一个 Message 实体。消息包含此连接:

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  @JoinTable(
      name = "quote_messages_link_table",
      joinColumns = {@JoinColumn(name = "message_id", nullable = false, updatable = false)},
      inverseJoinColumns = {@JoinColumn(name = "request_id", nullable = false, updatable = false)})
  private Set<Quote> quotes;

报价包含这个:

@ManyToMany(mappedBy = "quotes")
  private Set<Message> messages;

要写入数据库,我有这个:

Message message = Message.builder()
                  .requestOrResponse("RESPONSE")
                  .messageString(response)
                  .build();

messageRepository.save(message);

这只会将数据写入消息表。我认为级联会导致

quote_messages_link_table
被写入,并且 quote_table 已经有来自早期保存操作的记录。我知道我在某个地方出错了,但我不确定我做错了什么。任何人都可以建议或指向一个合适的教程,这可能对我所追求的有所帮助吗?

java spring-boot hibernate spring-data-jpa
© www.soinside.com 2019 - 2024. All rights reserved.