2

2つのノードエンティティがあると仮定します。

public class Account extends BaseEntity
{
...
@Fetch
@RelatedTo(type = "HAS_ROLE")
private Set<Role> roles = Sets.newHashSet();
...
}

public class Role extends BaseEntity
{
...
}

私のリポジトリには、特定のロールによってすべてのアカウントを取得する必要があるクエリがあります。

public interface AccountRepository extends GraphRepository<Account>
{
    @Query("START account=node:Account(0) MATCH account-[:HAS_ROLE]->({0}) return account")
    Iterable<Account> findByRole(Role role);
}

しかし、このクエリは機能しません。テストケースでこのメソッドを使用すると、次のエラーが発生します。

org.springframework.dao.InvalidDataAccessResourceUsageException:ステートメントの実行中にエラーが発生しましたSTART account = node:Account(0)MATCH account-[:HAS_ROLE]->({0})return account; ネストされた例外はorg.springframework.dao.InvalidDataAccessResourceUsageExceptionです:ステートメントの実行中にエラーが発生しましたSTART account = node:Account(0)MATCH account-[:HAS_ROLE]->({0})return account; ネストされた例外は予期される文字列です

どうやら私のクエリに何か問題があるようですが、何がわからないので、まだ理解できませんでした...誰か助けてもらえますか?

4

3 に答える 3

0

マーカス、

Neo4j1.8GAおよびSDN2.1.0RELEASEに移行する必要があります。

また、BaseEntityクラスとRoleクラスはどのように見えますか?

よろしく、

ラッセ

于 2012-10-22T15:04:58.793 に答える
0

このクエリを使用してみませんか?

START account=node(*) MATCH (account)-[r:HAS_ROLE]->() return account

すべてのアカウントに「HAS_ROLE」が返されます

于 2013-08-19T01:34:23.033 に答える
0

クエリを次のように書き直します。あなたはすでに役割を知っているので、それを出発点として使用してください。

@Query("START role=node({0}) MATCH account-[:HAS_ROLE]->role return account")
Iterable<Account> findByRole(Role role);
于 2013-08-19T01:50:08.090 に答える