次のような基本クラスのエンティティがあります。
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "IDTYPE",
discriminatorType = DiscriminatorType.STRING,
length = 12)
public class ProtoObject implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String idtype;
// more columns
私はこれのいくつかのサブクラスを作成して保持しています。ただし、idtype列がデータベースで期待される値に設定されても(別のDBブラウザツールで確認)、Javaオブジェクトのidtype プロパティは、EntityManagerがキャッシュに持っているオブジェクトに対して設定されないことがわかりました。
EntityManager を介してオブジェクトを検索すると、最近保存されたオブジェクトのidtypeが空白のように見えます! アプリケーションを閉じて再度開くと、データは正常に表示されます。
これは、EclipseLink 2.3.2.v20111125-r1046 を使用する JSF 2 アプリケーションです。
これは既知の問題ですか?回避策を提案できる人はいますか?