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() が呼び出されると、目的の文字列が返されません。問題は、MyEntity のインスタンス変数が Eclipse Link によって設定される前に User がインスタンス化されたことです。つまり、ユーザーは name = null および address = null で作成されました。

Eclipse Link がすべてのインスタンス変数を設定した後に User が確実に作成されるようにするにはどうすればよいですか?

4

1 に答える 1

0

次のように@PostLoad注釈を使用できます。

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

エンティティが完全に読み込まれ、フィールドが設定されると、メソッドが実行されます。

于 2013-04-03T15:07:49.013 に答える