JPAのEntityManagerでレコード読み込み時、Nullだったら空文字に勝手にしたい場合の対処法を記載します。
/**
* The persistent class for the database table.
*
*/
@Entity
@Table(name="sample_table")
@NamedQuery(name="sample_table.findAll", query="SELECT o FROM sample_table o")
public class sample_table implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private sample_tablePK id;
@Column(name="Id")
private String id;
@Column(name="col1")
private String col1;
・・・
・・・
/**
* PostLoadアノテーションは、EntityManagerでem.setResultListやNamedQuery/NativeQueryなどでレコードアクセスし、
* Entityへロードする際にフックされる。
*/
@PostLoad
private void whenLoadEntity(){
// System.out.println("================== POST LOAD ====================");
if(this.col1 == null) this.col1 = "";
・・・(その他レコードロード時の初期化処理を行う)
}
- @PostLoad
- private void whenLoadEntity()
上記2行がポイントです。PostLoadアノテーションは、EntityManagerでem.setResultListやNamedQuery/NativeQueryなどでレコードアクセスし、Entityへロードする際にフックされます。
Entityに値が入る前に設定してしまえばNullPointerExceptionの会費になります。但し、Entityを読込のみとして利用する場合に限定する必要がありそうです。(ここら辺はもう少し調べる必要があるかも)