2016-07-29 6 views
3

簡単にするために、neo4jに直接ノードアクセスする必要のあるロジックがありますが、残りはSpring Data Neo4j(SDN)を使用しています。 @Procedureのプロシージャーを使うと思っていましたが、neo4j組み込みドライバーとSDN4を使用するときにそのプロシージャーを使用する方法がわかりません。組み込みドライバを使用している場合、Neo4Jにプロシージャをデプロイ

@Configuration 
@EnableNeo4jRepositories(basePackages = "recommender.repository") 
@ComponentScan(basePackages = "recommender") 
@EnableTransactionManagement 
public class MyNeo4jConfiguration extends Neo4jConfiguration { 

@Bean 
public SessionFactory getSessionFactory() { 

    System.out.println("******* GET SESSION FACTORY!!!!"); 
    // with domain entity base package(s) 
    return new SessionFactory("recommender.model"); 
} 

// needed for session in view in web-applications 
@Bean 
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
public Session getSession() throws Exception { 
    return super.getSession(); 
} 

ここでは、プロパティファイルで::私は(DBアクセス用)@Procedureと@Contextを持つクラスを置くことができるセットアップを

#EmbeddedSetup 
driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver 
#URI=file:/neo4j/data/graph.db 

私の構成は以下のように非常にベアボーンですSDNの実装では、戦争展開中にSDNにアクセスできます。

答えて

3

SDN自体には手順が管理されていません。 はしかし、根本的なGraphDatabaseServiceにアクセスする方法があります:

これを使用して
EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver(); 
GraphDatabaseService databaseService = embeddedDriver.getGraphDatabaseService(); 

、あなたはこのアプリケーションで、あなたの手順クラスで動作するかどうか

((GraphDatabaseAPI) getDatabase()).getDependencyResolver().resolveDependency(Procedures.class).register(YourProcedure.class); 

しかし、本当にわからない、あなたの手順を登録することができますclasspath-でも試してみる価値がある。

+0

'getDatabase()'がどこから来たのか明瞭にするために追加してください。 –

+0

getDatabase()は、前の行に設定されているdatabaseServiceを返します – Luanne