Tôi đang có một mối quan hệ m: n như here, ngoại trừ việc có một số thông tin liên quan đến thực thể AuthorBook
. Vì vậy, tôi đoán, tôi không cần @JoinTable
chút nào và nên tạo một số class AuthorBook
bao gồm một liên kết cho mỗi Author
và Book
và thông tin bổ sung, phải không?Rõ ràng Hibernate tham gia bàn
Tôi đã thử nó như
@Entity
public class AuthorBook {
@Id @ManyToOne Author author;
@Id @ManyToOne Book book;
@LobOrWhatever AdditionalInformation additionalInformation;
}
và tôi chạy vào vấn đề (Tôi không thể nhớ chính xác nữa). Vì vậy, tôi đã giới thiệu một @GeneratedId int id
và thay đổi các tham chiếu đến @NaturalId
. Điều này hoạt động chủ yếu là tốt, nhưng vui vẻ, nó buộc tôi phải vượt qua đính kèm Author
và Book
đến Session#byNaturalId
mà không có ý nghĩa với tôi (tôi có id và các thực thể nên được lấy cùng nhau). Tôi cũng đã cố gắng
session.byNaturalId(AuthorBook.class)
.using("author.id", someAuthorId)
.using("book.id", someBookId)
.load();
nhưng điều này đã bị từ chối nói với tôi rằng "author.id" là không có id tự nhiên (mà thực sự đúng như id tự nhiên là "tác giả", nhưng nó "id" làm việc tốt như nhau).
Nhìn vào trang web, tôi thấy mọi người sử dụng id thay vì các thực thể trong bảng như vậy, vì vậy tôi tự hỏi nếu tôi đang cố gắng điều gì đó không thể .... (hoặc ngu ngốc).