Tag: spring data neo4j 4

在使用自定义的AttributeConverter for Neo4j时获取Neo.ClientError.Statement.TypeError Spring Boot JPA

我有一个与Spring Data Neo4j(v5.0.0RC2),Neo4j(v3.2.1)和Neo4j OGM(v3.0.0)一起运行的Kotlin(v1.1.4)Spring Boot(v2.0.0.BUILD-SNAPSHOT)应用程序。 尝试对具有自定义AttributeConverter的字段使用自定义JPA @Query时收到以下错误。 堆栈跟踪: org.springframework.dao.InvalidDataAccessResourceUsageException: Error executing Cypher; Code: Neo.ClientError.Statement.TypeError; Description: Property values can only be of primitive types or arrays thereof; nested exception is org.neo4j.ogm.exception.CypherException: Error executing Cypher; Code: Neo.ClientError.Statement.TypeError; Description: Property values can only be of primitive types or arrays thereof at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at […]

无法在Kotlin中创建Spring Data Event Listener

我试着创建一个这样的事件监听器: @Bean open fun beforeSaveEventApplicationListener(): ApplicationListener { return ApplicationListener() { fun onApplicationEvent(event: BeforeSaveEvent) { //Do something with event } } } 。 。 。 但它不会编译。 如果指定了genericstypes,那么编译器将返回: Type argument expected 我究竟做错了什么?

Spring Data Neo4j – ORDER BY {order}失败

我有一个查询结果应根据传递的参数进行排序: @Query("""MATCH (u:User {userId:{uid}})-[:KNOWS]-(:User)-[h:HAS_STUFF]->(s:Stuff) WITH s, count(h) as count ORDER BY count {order} RETURN o, count SKIP {skip} LIMIT {limit}""") fun findFromOthersByUserIdAndSortByAmountOfStuff( @Param("uid") userId: String, @Param("skip") skip: Int, @Param("limit") limit: Int, @Param("order) order: String): List<StuffWithCountResult> 对于order参数,我使用下面的enum和唯一的方法: enum class SortOrder { ASC, DESC; fun toNeo4JSortOrder(): String { when(this) { ASC -> return "" DESC -> return […]

Spring数据Neo4j受影响的行数

考虑一个Spring Boot,neo4j环境与Spring-Data-neo4j-4我想做一个删除,并得到一个错误信息,当它删除失败。 我的问题是因为Repository.delete()返回void我没有ideia如果删除修改任何东西或不。 第一个问题:有没有办法得到最后一个查询受影响的行? 例如在plsql中,我可以执行SQL%ROWCOUNT 所以无论如何,我尝试了下面的代码: public void deletesomething(Long somethingId) { somethingRepository.delete(getExistingsomething(somethingId).getId()); } private something getExistingsomething(Long somethingId, int depth) { return Optional.ofNullable(somethingRepository.findOne(somethingId, depth)) .orElseThrow(() -> new somethingNotFoundException(somethingId)); } 在上面的代码中,我查询数据库来检查值是否存在,然后删除它。 第二个问题:你推荐什么不同的方法? 所以现在,只是为了增加一些复杂性,我有一个集群数据库,db1只能创建,更新和删除,而db2和db3只能读取(这是由集群套接字保证的)。 db2和db3将从复制过程中接收来自db1的数据。 对于我目前看到的复制可能需要长达90秒,这意味着高达90年代的数据库将有不同的状态。 再看看上面的代码: public void deletesomething(Long somethingId) { somethingRepository.delete(getExistingsomething(somethingId).getId()); } 在调试中意味着: getExistingsomething(somethingId).getId() // will hit db2 somethingRepository.delete(…) // will hit db1 所以如果复制没有在db2中插入这个值,这个代码将会抛出异常。 第二个问题是:不改变这些套接字是否有任何方法可以删除并给出正确的响应?

来自JPA的@Formula注解类似于Spring数据neo4j?

我想使用neo4j在数据库级别计算我的域对象的一些属性,并返回只读结果。 在JPA中,可以通过域对象实体字段上的@Formula注解来实现: @Formula("(select avg(f.rating) from Feedback f where f.offer_id = offer_id)") private Double rating; 在Spring数据neo4j中应该如何实现相同的行为呢? 我写了一个Cypher查询,但不知道在哪里使用它。