メンチカツには醤油でしょ!!

ITエンジニア徒然 (AWS/Java/JavaScript/Google Spreadsheets/Jenkins/Mac/外部コミュニティ・勉強会レポ)

EclipseLinkで取得した値のスペースがトリムされてしまう

環境

  • Oracle 12c
  • EclipseLink 2.5.2
  • JPA (Native Query)

現象

EclipseLink(JPA)において、CHAR型の主キー(PK)の値を取得すると
末尾のスペースが取得できない。(rtrimされたような状態で取得される)

こういうフィールドはVARCHARで設計すべきという一般論もありますが
今回はこのCHAR型のスペースがrtimされてしまう現象についてです。

Entityコード

@Entity
public class HogeEntity implements Serializable {
@Id
@Column @Getter @Setter
private String element;

@Column @Getter @Setter
private String // 略
// 略
}

対応方針の検討

stackoverflow.com

stackoverflow.com

これらを参照する所によると、取得後のfillSpaceで対応したり、@PostLoadアノテーションでカバーしたりするのは良くなさそうです。

VARCHARにしたり、SessionCustomizerをextendsするのが良さそうです。