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 の余分な行をコメントアウトしてこのテストを実行すると失敗します。それ以外の場合は、テストに合格します。
これはバグですか?リポジトリ インターフェイスを正しく記述しましたか?