单个存储库中的自定义方法返回null

时间:2017-07-07 19:03:13

标签: java spring-data spring-data-jpa

我按照参考指南创建和自定义存储库,并提出了以下内容:

public interface UserRepository extends JpaRepository<User, Long>, UserRepositoryCustom {
}


@Transactional(readOnly = true)
public class UserRepositoryCustomImpl implements UserRepositoryCustom {

    @Override
    public User findByToken(UUID token) {
          return new User();
    }
}


public interface UserRepositoryCustom {
    User findByToken(UUID token);
}

在我的情况下,userRepository.findByToken(token);返回null。

@Edit

以下测试失败

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = NONE)
public class UserRepositoryTest {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test() throws Exception{
        assertNotNull(userRepository.findByToken(UUID.randomUUID()));
    }
}

1 个答案:

答案 0 :(得分:1)

您的自定义实现名称错误。它应该以存储库的类名命名,而不是在声明自定义方法的接口之后命名。

刚刚将UserRepositoryCustomImpl重命名为UserRepositoryImpl

该方法当前返回null的原因是因为Spring Data根据名称创建了一个查询,并且没有找到具有指定标记的User