我有两个实体。 一个实体与另一个实体相关联。
@Entity
Class Author{
@Id
Long id;
@Column(name = "author_id")
private Ling authorId;
}
@Entity
class Book{
@Id
Long id;
@ManyToOne(fetch = FetchType.LAZY)
@column(name = "author_id", referencedColumnName = "author_id")
Author author;
}
在这里,假设所有getter和setters设置。 作者的author_id保存在我的 Book 实体表中。
Book book = Book.findById(1);
book.getAuthor().getAuthorId();
当我这样做时,即使author_id存储在我的书表中,我也无法直接访问它。在这里,它会触发另一个 sql 查询来获取作者实体,然后返回author_id。有没有办法直接访问author_id。
首先,Author
是Book
实体中的懒惰关联。这意味着它不会是获取书籍的原始查询的一部分:
Book book = Book.findById(1);
这将通过访问该惰性关联的任何属性来触发:
book.getAuthor().getAuthorId();
您正在寻找的似乎是JPQL的投影:
select a.id
from Book b
inner join b.author a
where b.id = :id