我有一个类似于这里的m:n关系,但是需要将一些信息与
我尝试了以下方法:
AuthorBook
实体相关联。因此,我认为根本不需要使用@JoinTable
,而应该创建一个AuthorBook
类,其中包含对每个Author
和Book
的链接以及其他信息,对吗?我尝试了以下方法:
@Entity
public class AuthorBook {
@Id @ManyToOne Author author;
@Id @ManyToOne Book book;
@LobOrWhatever AdditionalInformation additionalInformation;
}
我遇到了问题(具体的我已经记不清了)。所以我引入了一个@GeneratedId int id
并将引用更改为@NaturalId
。这个方法大部分情况下都有效,但有趣的是,它强制我将已连接的Author
和Book
传递给Session#byNaturalId
,这对我来说毫无意义(我有id,而且实体应该一起获取)。我也尝试过其他方法。
session.byNaturalId(AuthorBook.class)
.using("author.id", someAuthorId)
.using("book.id", someBookId)
.load();
但是被拒绝了,告诉我"author.id"不是自然id(实际上这是正确的,因为自然id是"author",但它的"id"同样有效)。
看着网上的资料,我发现每个人在这样的表中都使用id而不是实体,所以我想知道我是否在尝试一些不可能的事情...(或者很愚蠢)。