Spring boot:仅访问 JPA 中的关联列值,而不获取完整的关联实体



我有两个实体。 一个实体与另一个实体相关联。

@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。

首先,AuthorBook实体中的懒惰关联。这意味着它不会是获取书籍的原始查询的一部分:

Book book = Book.findById(1);

这将通过访问该惰性关联的任何属性来触发:

book.getAuthor().getAuthorId();

您正在寻找的似乎是JPQL的投影:

select a.id
from Book b
  inner join b.author a
where b.id = :id

相关内容

  • 没有找到相关文章

最新更新