Spring Data JPAのJParePositoryインターフェイスを実装するリポジトリは、ソートセットを返すことができますか?

StackOverflow https://stackoverflow.com/questions/8839903

  •  27-10-2019
  •  | 
  •  

質問

Spring Data JPA 1.0.1を使用しています。 JPAリポジトリが定義されています。埋め込みデータベースの実装を使用して統合テストを作成しています。私のサービスクラスが私のリポジトリを呼び出すとき、私は次の例外を取得します

result returns more than one elements
    at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:298)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:102)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:368)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:163)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy48.findMyEntities(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

これが私のリポジトリの実装です

public interface MyRepository extends JpaRepository<MyEntity, Long> {
    @Transactional(readOnly = true)
    @Query("select e from MyEntity e where e.state= :state")
    public SortedSet<MyEntity> findMyEntities(@Param("state") EntityState state);
}
役に立ちましたか?

解決

私は変更しました

@Transactional(readOnly = true)
@Query("select e from MyEntity e where e.state= :state")
public SortedSet<MyEntity> findMyEntities(@Param("state") EntityState state);

@Transactional(readOnly = true)
@Query("select e from MyEntity e where e.state= :state")
public List<MyEntity> findMyEntities(@Param("state") EntityState state);

そして、すべてがうまくいきました。次に、適切な並べ替えを確保するためにソートパラメーターを追加しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top