我正在使用 Spring Data Neo4J。
我扩展了基础GraphRepository
接口,增加了一个方法,如下:
/**
* Extension to the repository interface for standard Spring Data repo's that
* perform operations on graph entities that have a related RDBMS entity.
*
* @author martypitt
*
* @param <T>
*/
public interface RelatedEntityRepository<T> extends GraphRepository<T>,
RelationshipOperationsRepository<T>,CypherDslRepository<T> {
public T findByEntityId(Long id);
}
但是,我发现这个接口的子类没有按预期运行。
public interface UserRepository extends RelatedEntityRepository<UserNode>{
}
当我打电话时UserRepository.findByEntityId(1L)
,我希望得到一个UserNode
返回的实例,或者null
。
相反,我得到一个scala.collection.JavaConversions$MapWrapper
.
但是,如果我更改UserRepository
以指定类型,那么一切正常(虽然,破坏了基类的目的)
public interface UserRepository extends RelatedEntityRepository<UserNode>{
public UserNode findByEntityId(Long id);
}
这是一个测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/graph-test-context.xml"})
@Transactional
public class UserRepositoryTests {
@Autowired
private UserRepository userRepository;
// For Bug
@Test
public void canFindByEntityId()
{
UserNode userNode = new UserNode(1L);
userRepository.save(userNode);
UserNode node = userRepository.findByEntityId(1L);
assertThat(node, notNullValue());
assertThat(node, isA(UserNode.class));
}
}
使用注释掉 UserRepository 中的额外行运行此测试失败。否则,测试通过。
这是一个错误吗?我是否正确编写了 repo 接口?