1

一部の PK フィールドが CHAR(9) として定義されている Oracle テーブルがいくつかあり、すべての値がパディング付きで格納されています。

したがって、キー フィールドにスペースが埋め込まれているすべてのオブジェクトを取得する必要があります。ただし、EclipseLink がデータをオブジェクトに読み込むと、スペースは削除されます。これは ID 値で発生するため、スペースが含まれるようにキーを「修正」するために @PostLoad を使用する方法はありません。

キー値がトリミングされた値に変更され、キー値の更新/削除が失敗するため、オブジェクトを削除/更新する方法がありません。

CHAR カラムの値をトリミングしないように永続化ユニットを構成するにはどうすればよいですか?

4

1 に答える 1

2

これを構成するには、SessionCustomizer を使用できます。

public MyCustomizer implements SessionCustomizer {
  public customize(Session session) {
    session.getLogin().setShouldTrimStrings(false);
  }
}

しかし、一般に、VARCHAR の代わりに CHAR を使用することは、通常は非常に悪い考えです。

于 2012-11-13T14:19:44.313 に答える