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

AWS/Java/Node.js/Spreadsheets/Docker/Jenkins/コミュニティ・勉強会レポを主とした技術系ブログ

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するのが良さそうです。