まず:
私は、Hibernateとの奇妙な問題が発生しています。アクティブおよび解決のチケットを保存する2つのデータベースのテーブルがあります。Javaでは、スーパークラス(チケット)とエンティティサブクラス(ActiveTicketとResolvedTicket)があります。
チケットが解決されたときに今ではResolvedTicketテーブルに移動します。
今私は私が最初にアクティブなチケットを取得しようと、私はその後、ヌルオブジェクトを持っているならば、私は解決されたチケットを取得しようとするカスタムfindByIDメソッドを持っています。それは次のようになります。
public Ticket findByID(Long id) {
Ticket t = findByID(ActiveTicket.class, id);
if (null == t) {
t = findByID(ResolvedTicket.class, id);
}
return t;
}
これは、カスタムfindByIDです。
public <C> C findByID(Class<C> class, PK id) {
return (C) getHibernateTemplate().get(class, id);
}
私の例では、私が最初のスニペットで()findByIDを呼び出すとき、最初の行がNULL値を含むオブジェクトを返し、データベースに格納されているResolvedTicketを有します。これは、プロキシオブジェクトのように見えますが、私はそれのゲッターのいずれかを呼び出そうとするたびに、私はトン== nullをテストするときにオブジェクトがnullではないので、奇妙でNullPointerExceptionが、取得するので、それは非常に奇妙です。
。これはgetHibernateTemplateは、()(ActiveTicket.class、ID)を取得する呼び出されたときに、オブジェクトがどのように見えるかです:
まず:
問題は、Hibernateのバージョンとありました。休止状態の新しいバージョンにアップグレードした後に問題が去っていきました。