2016-06-15 3 views
0

を私は次のコードをしている原因:私はそれをして何かをする必要がある場合があります疑いHashSet.addAll(リポジトリクエリからリスト)InvalidDataAccessApiUsageException

org.springframework.dao.InvalidDataAccessApiUsageException: 
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: enone.domain.PartnerEntity; nested exception is java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: domain.PartnerEntity 
     at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:381) 
     at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:157) 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417) 
     at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59) 
     at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213) 
     at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:111) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
     at com.sun.proxy.$Proxy75.findByVatNumberExcludingPartner(Unknown Source) 

HashSet hashSet = new HashSet(); 
        hashSet.addAll(partnerRepository.findByVatNumber(partner)); 
hashSet.addAll(etc...); 

を私は次の例外を取得しています怠惰な読み込みですか?私は保存メソッドを呼び出すのではなく、結果をハッシュセットに追加するだけで少し奇妙です。

説明はありますか?

答えて

0

問題は実際のHashSetではなく、リポジトリとはまったく関連していません。

パートナーのIDを比較する代わりに、パートナーとパートナーを比較していました。 partnerEntityには遅延ロードされ、さらに別のセッション/クエリから追加されたフィールドがあります。

私はこの置き換え:

@Query("select p from PartnerEntity p where p.country = ?1 AND NOT p.id = ?2") 
List<PartnerEntity> findByCountryNameExcludingPartner(CountryEntity country, Integer partnerEntity); 

そして今、それが働いている。これにより

@Query("select p from PartnerEntity p where p.country = ?1 AND NOT p.id = ?2") 
    List<PartnerEntity> findByCountryNameExcludingPartner(CountryEntity country, PartnerEntity partnerEntity); 

を。また、私は全体のエンティティの代わりにpartnerEntity.getId()を送っています。

関連する問題