HibernateTemplateのGetメソッドはnull値を持つオブジェクトを返します。

まず:

私は、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のバージョンとありました。休止状態の新しいバージョンにアップグレードした後に問題が去っていきました。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=181871&siteId=1