Hibernate getId загружает объект, даже если он ленивый - PullRequest
7 голосов
/ 12 февраля 2012

Я помню, что в JPA или hibernate есть аннотация, которая указывает hibernate использовать метод getId / setId вместо свойства (мы аннотируем наши свойства).Без этой настройки getId приводит к попаданию в базу данных и заполнению всех полей этого объекта, а это не то, что мне нужно.Кто-нибудь знает, что это за аннотация?

Пример:

public void Project {
  @Id
  //Other annotation forcing hibernate to use property get/settter
  public Long id;
}

public Ticket {
  @ManyToOne(lazy=true)
  public Project project;
}

, так что ticket.getProject.getId () приводит к попаданию в базу данных для получения проекта, когда идентификатор уже находится в спящем режимеобъект прокси проекта.Аннотация исправит то, что я помню.

спасибо, Дин

1 Ответ

12 голосов
/ 12 февраля 2012

Вы должны указать Hibernate для доступа к идентификатору, используя доступ к свойству, а не доступ к полю:

@Id
@Access(AccessType.PROPERTY)
private Long id;

Вы действительно не должны делать свои поля общедоступными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...