1

最近、Neo4j()のSpring Dataで遊んでいてversion 2.1.0.BUILD-SNAPSHOT、GraphRepositoryインターフェイスに関連する問題が発生しています。

次のように、メソッド名に含まれるプロパティを使用して、Tクラスのノードを検索するメソッドを記述できます。

public interface UserRepository extends GraphRepository<User> {
    public User findByUsername(String username);
    public User findById(Long id);
}

私のユーザークラス:

@NodeEntity
public class User {

    @GraphId
    Long id;

    @Indexed
    private String username;

    private String password;

    ...
}

そして私のapplicationContext.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation=" 
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/data/neo4j
        http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">


    <context:spring-configured />
    <context:annotation-config />

    <context:component-scan base-package="package.for.services" />  
    <neo4j:repositories base-package="package.for.repositories" />

    <neo4j:config graphDatabaseService="graphDatabaseService" />
    <bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
        destroy-method="shutdown" scope="singleton">
        <constructor-arg value="/path/to/neo4j.db" />
        <constructor-arg>
            <map>
                <entry key="allow_store_upgrade" value="true" />
            </map>
        </constructor-arg>
    </bean>
</beans>

私の問題は、findById(Long id)メソッドがその特定のIDを持つノードを返すが、その特定のユーザー名を持つノードの代わりにfindByUsername(String username)返すことです。null

どんな助けでもありがたいです。

4

1 に答える 1

0

データベースを再作成することで解決しました。そのディレクトリを削除し、アプリケーションを再起動しました。

インデックスは最初から正しく作成されていないと思います。SpringDataは、一度作成されたインデックスを変更することはできません。

ありがとうございました。

于 2012-10-21T15:37:16.327 に答える