Spring Data Neo4j Repository Save方法正在对UNWIND CREATE进行UNWIND MATCH安装

时间:2019-02-26 12:20:22

标签: neo4j spring-data-neo4j

请为弹簧数据neo4j rest示例找到以下类

模型类

@Data
@NodeEntity
public class Model implements Serializable {

   @Id
   @GeneratedValue
   private Long id;

   private String name;

   private String uUID;

   private boolean status = true;

   @CreatedDate
   private Date createdDate;

   @LastModifiedDate
   private Date modifiedDate;

}

ModelRepository类

@Repository
public interface ModelRepository extends Neo4jRepository<Model, Long> {

   Optional<Model> findByStatusTrueAndUUID(UUID uuid);

   Stream<Model> streamAllByStatusTrue();
}

服务分类方法

public Model createModel(Model request) throws DSException {
      return modelRepository.save(request);
}

Repository.save方法生成以下密码查询

UNWIND {rows} as row MATCH (n) WHERE ID(n)=row.nodeId SET n:`Model` SET n += row.props RETURN row.nodeId as ref, ID(n) as id, {type} as type with params {type=node, rows=[{nodeId=1, props={createdDate=null, name=1-name, modifiedDate=2019-02-26T12:05:16.184Z, uUID=05fdb066-13a4-4ed2-b53f-f3e48b5ff9ba, status=true}}]}

由于上述密码查询具有MATCH而不是CREATE,因此请求节点未持久保存在neo4j数据库中

请帮助您理解和解决问题。 以下是使用的版本:

spring-data-neo4j:5.0.7.RELEASE

2 个答案:

答案 0 :(得分:0)

问题在于所添加属性的类型。如果您不会传递char[] ch = new char[scores.length]; 提供的正确的属性类型(例如字符串或整数),则会遇到此错误

答案 1 :(得分:0)

我遇到了同样的问题。 最后我发现,如果您为 Model 分配了 id 属性,Neo4j Repository Save 方法正在执行 UNWIND MATCH 而不是 UNWIND CREATE; 如果您没有分配 id,那么 Neo4j Repository Save 方法正在执行 UNWIND CREATE。