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を読込のみとして利用する場合に限定する必要がありそうです。(ここら辺はもう少し調べる必要があるかも)