在下面的视频中,我演示了一个使用Neo4J数据库和Neo4J OGM的Quarkus应用程序示例。

看一下GitHub上的示例项目 。

我为咖啡豆创建了一个示例域,其中包含我们可以查询和匹配的某些风味配置文件。 红色节点是来自某个国家/地区的咖啡豆,味道像某些口味。 豆类起源国也以“某些风味”而闻名。


在当前的1.4.2.Final版本中,Quarkus带有基本的Neo4J支持 ,但是在撰写本文时还没有包括对OGM映射的支持。 但是,我们可以使用一个简单的生产者添加支持,该生产者公开Neo4J OGM SessionFactory

 import org.neo4j.ogm.config.Configuration;  import org.neo4j.ogm.session.SessionFactory;  ...  @ApplicationScoped  public class SessionFactoryProducer { public static final String PACKAGE = "com.sebastian_daschner.coffee.entity" ; @ConfigProperty (name = "quarkus.neo4j.uri" ) String databaseUri; @ConfigProperty (name = "quarkus.neo4j.authentication.username" ) String username; @ConfigProperty (name = "quarkus.neo4j.authentication.password" ) String password; @Produces SessionFactory produceSessionFactory() { Configuration neoConfig = new Configuration.Builder() .uri(databaseUri) .credentials(username, password) .useNativeTypes() .build(); return new SessionFactory(neoConfig, PACKAGE); } void disposeSessionFactory( @Disposes SessionFactory sessionFactory) { sessionFactory.close(); }  } 

现在,我们可以将SessionFactory注入我们的bean中,并使用它来查询图形数据库:

 import org.neo4j.ogm.session.*;  ...  @ApplicationScoped  public class CoffeeBeans { @Inject SessionFactory sessionFactory; public List<CoffeeBean> getCoffeeBeans() { Session session = sessionFactory.openSession(); return new ArrayList<>(session.loadAll(CoffeeBean. class , new SortOrder( "name" ), 1 )); } public List<CoffeeBean> getCoffeeBeansSpecificFlavor(String flavor) { Session session = sessionFactory.openSession(); Iterable<CoffeeBean> result = session.query(CoffeeBean. class , "MATCH (b:CoffeeBean)-[:TASTES]->(:Flavor {description: $flavor})\n" + "MATCH (b)-[isFrom:IS_FROM]->(country)\n" + "MATCH (b)-[tastes:TASTES]->(flavor)\n" + "RETURN b, collect(isFrom), collect(country)," + " collect(tastes), collect(flavor)\n" + "ORDER by b.name;" , Map.of( "flavor" , flavor)); return resultList(result); } ...  } 

我的示例图如下所示,其中CoffeeBean对象是通过Neo4J OGM映射的:

 import org.neo4j.ogm.annotation.*;  ...  @NodeEntity  public class CoffeeBean { @Id public String name; @Relationship ( "IS_FROM" ) public Set<Origin> origins = new HashSet<>(); @Property public Roast roast; @Relationship ( "TASTES" @Relationship "TASTES" ) public Set<FlavorProfile> flavorProfiles = new HashSet<>(); ...  } 

观看视频,并查看GitHub上的项目以获取完整图片。

玩得开心探索您的图表! 作为进一步的练习,您可以编写查询来匹配具有某种风味的咖啡豆作为其“主要”风味(百分比最高的咖啡豆)或具有相似风味特征的咖啡豆等。

翻译自: https://www.javacodegeeks.com/2020/05/neo4j-ogm-with-quarkus.html

Neo4J OGM与Quarkus相关推荐

  1. neo4j安装_Neo4J OGM与Quarkus

    neo4j安装 在下面的视频中,我展示了一个使用Neo4J数据库和Neo4J OGM的Quarkus应用程序示例. 看一下GitHub上的示例项目. 我为咖啡豆创建了一个示例域,其中包含我们可以查询和 ...

  2. ogm neo4j_Neo4J OGM与Quarkus

    ogm neo4j 在下面的视频中,我演示了一个使用Neo4J数据库和Neo4J OGM的Quarkus应用程序示例. 看一下GitHub上的示例项目 . 我为咖啡豆创建了一个示例域,其中包含我们可以 ...

  3. Neo4j OGM的配置问题

    日志: Exception org.springframework.web.util.NestedServletException: Request processing failed; nested ...

  4. org.neo4j.ogm.exception.MappingException: Error mapping GraphModel to instance of ***.ProjectGraph

    实例化知识图谱对象ProjectGraph.java 提示如下截图错误信息: Exception in thread "main" org.neo4j.ogm.exception. ...

  5. neo4j ogm Class com is not a valid entity class. Please check the entity mapping问题

    目前使用Neo4j OGM库的人应该不多了,现在可以直接使用Spring Boot Data Neo4j 简称SDN. 但是使用OGM的时候遇到一个问题:neo4j :: Getting java.l ...

  6. Could not load driver class org.neo4j.ogm.drivers.http.driver.HttpDriver(Neo4j连接用bolt还是http)

    这里需要注意如果只是用了 spring-boot-starter-data-neo4j 的话,连接驱动默认使用的是bolt协议.bolt协议好像底层使用二进制操作,更高效.如果要是用http协议的话要 ...

  7. java: 找不到符号或者包 (eg.程序包org.neo4j.ogm.annotation不存在)

    错误原因 解决办法 点击IDEA右侧Maven,在其弹框的左上角点击刷新按钮即可,此时IDEA会自动为你去更新依赖

  8. neo4j ogm_带有Hibernate OGM的NoSQL –第二部分:查询数据

    neo4j ogm 1月底发布了Hibernate OGM的第一个最终版本之后,团队一直在忙于制作一系列教程式博客,使您有机会轻松地从Hibernate OGM重新开始. 第一部分是关于设置和保留您的 ...

  9. neo4j ogm_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体

    neo4j ogm Hibernate OGM的第一个最终版本已经发布,团队从发布狂潮中恢复了一些. 因此,他们考虑开设一系列教程风格的博客,使您有机会轻松地从Hibernate OGM重新开始. 感 ...

最新文章

  1. leetcode 375. Guess Number Higher or Lower II | 375. 猜数字大小 II(动态规划思路总结)
  2. hive币涨幅空间大吗_自动消防水炮只能安装在大空间场所吗
  3. C语言-数据结构-可变长顺序表的查找操作
  4. spring cloud报错解决:java.lang.ClassNotFoundException: com.netflix.servo.monitor.Monitors
  5. 微信小程序学习总结(一)——程序文件内容
  6. Spark的安装和使用方法
  7. 电容篇-电容器件工作原理及参数分析理解
  8. ES监视器Watcher详解
  9. adjacent_difference 的使用
  10. fig-tlo_PHP-FIG,Quo Vadis?
  11. BaseFX 实习小记(一)
  12. pytorch训练时前一次迭代的loss正常后一次迭代却报nan
  13. 用Java给图片添加文字水印
  14. Starrocks集群部署
  15. 附件四:攻击方评分标准.docx
  16. kitti 数据集点云使用笔记
  17. pytest合集(3)— 命令行参数
  18. 使用UltralSO软碟通将U盘做为启动盘,将系统装到硬盘里的步骤
  19. 8.C语言——位操作符与位移操作符
  20. 朗读评价语言集锦_表扬朗读好的评语,适合班上朗读的句子加感悟

热门文章

  1. 【2018.5.12】模拟赛之四-ssl2416 条形图【高精度,dp】
  2. 低价购买(洛谷 1108)
  3. 2018 计蒜之道 复赛
  4. 8、mybatis中的sql映射文件详解(3)
  5. 39、JAVA_WEB开发基础之ajax和json
  6. Hadoop入门(十七)Mapreduce的多表关联程序
  7. mybatis入门(二)之XML 映射配置文件
  8. JavaScript学习总结(四)——逻辑OR运算符详解
  9. 使用JDOM2.0.4 操作/解析xml
  10. ElasticJob-分布式作业调度神器,你们还在用Quartz吗