[JPA]双方向マッピングmappedBy


mappedBy
  • 関係を設定する所有者
  • の一方向マッピングでも、テーブルには関連関係があります.
  • 双方向は、クエリロジックを追加します.
  • 双方向マッピングの場合、EntityではなくJPAでmappedByを使用します.
  • の下のコードには、BOOK Entityに@OneToMany(mappedBy = "book")が追加されています.
  • 関連関係の所有者でなければ、変更は反映されません.
  •   @Entity
      @Getter
      @NoArgsConstructor
      public class Book {
          @Id
          @Column(name = "ISBN")
          private String isbn;
      
          @Column(name = "BOOK_NAME")
          private String bookName;
      
          @Column(name = "AUTHOR")
          private String author;
      
          @Column(name = "PUBLISHER")
          private String publisher;
      
          @Column(name = "KDC")
          private String kdc;
      
          @Column(name = "CATEGORYy")
          private String category;
      
          @Column(name = "KEYWORD")
          private String keyword;
      
          @Column(name = "BOOK_IMAGE")
          private String img;
      
          @OneToMany(mappedBy = "book")
          private List<BookReview> bookReviewList = new ArrayList<>();
     
      }
      @Getter
      @Entity
      @NoArgsConstructor
      public class BookReview {
          @Id
          @GeneratedValue
          private long reviewNo;
      
          private int rating;
          private String reviewContents;
          private LocalDateTime createDate;
          private int declaration;
      
          //NORMAl, BLIND
          @Enumerated(EnumType.STRING)
          private ReviewStatus reviewStatus;
      
          @ManyToOne(fetch = FetchType.LAZY)
          @JoinColumn(name = "isbn")
          private Book book;
      }