Hibernate Postload и нулевые поля на ссылочных объектах - PullRequest
0 голосов
/ 08 августа 2011

У меня есть две сущности, подобные приведенным ниже:

@Entity
public class Project {
   @Id
   private id;
   private String name;

   ...
}

@Entity
public class Person {
   @Id
   private id;
   private String name;

   @ManyToOne
   private Project project;

   @PostLoad
   void onLoad(){
      if (project.getName() == null){
         //It's always null!!!
      }
   }


   ...
}

Как говорится в коде, в onLoad поле связанной сущности всегда равно нулю, фактически все поля связанной сущности равны нулю. Мне нужен Hibernate, чтобы получить поле перед вызовом onLoad.

Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2011

Это просто не работает должным образом в Hibernate.Вы не можете получить доступ к свойствам связанных классов в PostLoad.См. Чтение набора в PostLoad на JPA / Hibernate

0 голосов
/ 08 августа 2011

Вы должны установить Fetch strategy, это может быть:

FetchType.LAZY

или

FetchType.EAGER

Вы также должны определить столбец соединения с внешним идентификатором.

В вашем коде:

...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_id")
private Project project;
...