1

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);
}
4

1 に答える 1

3

私は

@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);

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

于 2012-01-13T13:39:55.370 に答える