1

マッピングに注釈を使用する休止状態 3.6 プロジェクトで作業していましたが、現在はそれを休止状態 5.1 に移行しており、この実行時例外が発生しています 。非エンティティ オブジェクト インスタンスが evict に渡されました

HibernateUtils.getSession().evict(origProject.getProbidinfo());
HibernateUtils.getSession().evict(origProject);

以下は、例外がスローされている DefaultEvictEventListener.class のコードです。

EntityPersister persister = null;
                final String entityName = persistenceContext.getSession().guessEntityName( object );
                if ( entityName != null ) {
                    try {
                        persister = persistenceContext.getSession().getFactory().getEntityPersister( entityName );
                    }
                    catch (Exception ignore) {
                    }
                }
                if ( persister == null ) {
                    throw new IllegalArgumentException( "Non-entity object instance passed to evict : " + object );
                }


私の場合、hibernate 5.1 の場合、perser は null です。明確でない場合は、さらに詳細を提供できます

4

2 に答える 2

0

Hibernate は、渡されたオブジェクトがエンティティであることを確認するため、エンティティ以外のオブジェクト (私の場合は ArrayList) または null を削除またはデタッチしたくありません。

私は、キャッチして無視するよりも、ソリューションの null チェックまたは型チェックを好みます。

于 2021-02-04T09:00:02.727 に答える