0

给出了以下 JPA 实体:

@Entity(name = "MyEntity")
public class MyEntity {

   @Id
   protected String id = null;

   protected String name = null;

   protected String adress = null;

   @Transient
   protected User user = new User(name, adress);

   // Required by JPA
   protected MyEntity() {
   }

   public MyEntity(String id, String name, String adress) {
   // assign instance variables 
   }

   public String getUser() {
      return user.toString();
   }

   ...

}

在 Eclipse Link 创建的 MyEntity 上调用 getUser() 时,将不会返回所需的字符串。问题是在 Eclipse Link 设置 MyEntity 的实例变量之前实例化了 User。换句话说,用户是使用 name = null 和 address = null 创建的。

如何确保在 Eclipse Link 设置所有实例变量后创建用户?

4

1 回答 1

0

您可以像这样使用@PostLoad注释

@PostLoad
private initUser(){
      user = new User(name, adress);
   }

一旦您的实体完全加载并设置了它的字段,该方法将被执行。

于 2013-04-03T15:07:49.013 回答