Spring boot: доступ только к значению связанного столбца в JPA без извлечения полной связанной сущности - PullRequest
0 голосов
/ 21 января 2019

У меня есть две сущности. одна сущность связана с другой.

@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;
}

Здесь предположим, что все геттеры и сеттеры установлены. author_id автора сохраняется в таблице сущностей моей книги.

Book book = Book.findById(1);
book.getAuthor().getAuthorId();

Когда я делаю это, даже когда author_id хранится в моей таблице книг, я не могу напрямую получить к ней доступ. Здесь он запускает другой sql-запрос для получения объекта author и затем возвращает author_id. Есть ли способ прямого доступа к author_id.

1 Ответ

0 голосов
/ 21 января 2019

Прежде всего Author - это LAZY ассоциация в 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
...