2

現在、neo4j を使用した Java プロジェクトに取り組んでいます。

Spring Data Neo4jを使用し、グッド リレーションシップブックからほとんどの情報を取得します。

このドキュメントでは、グラフの標準エンティティ タイプ表現はIndexingNodeTypeRepresentationStrategyであると述べています。

私たちのプロジェクトでは、サブリファレンス ノードを持つプロジェクトを優先します。

リポジトリを操作するときにこの戦略を使用するように neo4j を構成するにはどうすればよいですか。HelloWorld の例から始めたので、現在、次のようなリポジトリ インターフェイスがあります。

public interface IWebsiteGraphRepository extends GraphRepository<Website> {}

さらに、ノード エンティティがあります (関係のないコードのほとんどは省略します)。

@NodeEntity
public class Website {
    ...
}

TypeRepresentationStrategyを設定する方法の小さな例を誰でも提供できますか?

これはSpring構成で実行できますか?

構成は次のようになります。

<context:annotation-config />
<tx:annotation-driven mode="aspectj" transaction-manager="neo4jTransactionManager" />
<context:component-scan base-package="my.base">
    <context:exclude-filter type="annotation" 
                  expression="org.springframework.stereotype.Controller" />
    </context:component-scan>
<neo4j:config storeDirectory="target/neo4j-db" />
<neo4j:repositories base-package="my.base.packages.repositories" />

編集:

別のセッションの後、私はついにそれを機能させることができました!Michael Hungers の回答に基づいて開始しましたが、Bean を作成できませんでした。彼の例がどこからのものかを見つけました: gitHub。ただし、これはまだうまくいきませんでした。TypeRepresentationStrategyFactory クラスのソース コードを詳しく調べ始めました。Strategy は非公開の列挙型であることがわかりました。これは、私が提供しようとした 2 番目のコンストラクター引数です。私のプロジェクトでは、タイプ Strategy としてそれを検出することはありませんでした。

ストラテジーは非公開なので、最初は少し懐疑的でした。つまり、タイプ Strategy が見つからないため、コードで TypeRepresentationStrategyFactory をインスタンス化することさえできませんでした。私はすぐに、Spring がそのようなことを実行できると思われることを知りました: Beans with private constructor

最終的に、コンストラクターの引数をまったく識別していなかったため、Michael のソリューションを調整する必要がありました。私が何をしたとしても。多分それは私の設定です、私は本当に知りません。しかし、最終的に、プライベート列挙から Beanを作成し、これをコンストラクターへの参照として提供するソリューションを思いつきました。

<bean id="subref" factory-method="valueOf"
class="org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory.Strategy">
    <constructor-arg>
        <value>SubRef</value>
    </constructor-arg>
</bean>

<bean id="typeRepresentationStrategyFactory"
    class="org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory">
    <constructor-arg index="0" ref="delegatingGraphDatabase" />
    <constructor-arg index="1" ref="subref" />
</bean>
4

2 に答える 2

3

これは次のことを行う必要があります。

<bean id="typeRepresentationStrategyFactory" class="org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory">
    <constructor-arg index="0" ref="graphDatabaseService"/>
    <constructor-arg index="1" value="SubRef"/>
</bean>
于 2012-05-31T17:45:18.600 に答える
0

あなたはこれを行うことができます :

<bean id="typeRepresentationStrategyFactory" class="org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory">
    <constructor-arg index="0" ref="graphDatabaseService"/>
    <constructor-arg index="1">
        <value type="org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory.Strategy">SubRef</value>
    </constructor-arg>
</bean>
于 2013-06-20T13:08:19.393 に答える