试图将Json插入Neo4j



Everyone我是neo4j的新手,我正试图将Json输入到neo4j中,但我得到的是Match语句,而不是create。早些时候,我自己尝试了一些东西,当我插入Json消息时{"name":"john","dept":"Science"}它没有出现故障,但每次我想添加数字数据时都会出错。

2020-03-10 13:21:59.793  INFO 94817 --- [ntainer#0-0-C-1] o.n.o.drivers.http.request.HttpRequest : Thread: 
29, url: http://localhost:7474/db/data/transaction/92, request: {"statements":[{"statement":"UNWIND {rows} 
as row **MATCH** (n) WHERE ID(n)=row.nodeId SET n:`UsersInfo` SET n += row.props RETURN row.nodeId as ref,
ID(n) as id, {type} as type","parameters":{"type":"node","rows":[{"nodeId":23,"props":{"name":"raj",
"dept":"science","age":11}}]},"resultDataContents":["row"],"includeStats":false}]}

这些是我的课KafkaConfiguration

@EnableKafka
@Configuration
public class KafkaConfiguration {
@Bean
public ConsumerFactory<String, Users> userConsumerFactory(){
Map<String, Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
config.put(ConsumerConfig.GROUP_ID_CONFIG, "group_json");
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
return new DefaultKafkaConsumerFactory<>(config, new StringDeserializer(),
new JsonDeserializer<>(Users.class));
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, Users> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, Users> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(userConsumerFactory());
return factory;
}
}

KafkaConsumer类

Service
public class KafkaConsumer {
@Autowired
public Neo4jservice neo4jService;
@KafkaListener(topics = "UsersJson", groupId = "group_id", containerFactory = "kafkaListenerContainerFactory")
public void consume(Users users) {
System.out.println("Consumed message: " + users);
UsersInfo usern = new UsersInfo();
usern.setAge(users.getAge());
usern.setDept(users.getDept());
usern.setId(users.getId());
usern.setName(users.getName());
neo4jService.saveIntoStudentsTable(usern);
}
}

Neo4j服务

@Service
public class Neo4jservice {
@Autowired
private UsersRepo userRepo;
public UsersInfo saveIntoStudentsTable(UsersInfo users) {
UsersInfo usern = userRepo.save(users);
return (usern);
}   
}

用户报告

@Repository
public interface UsersRepo extends Neo4jRepository<UsersInfo, Long>{
}

用户类

public class Users {
private Long id;
private String name;
private String dept;
private Integer age;
**getters,setters and toString method here**
}

同样,UsersInfo类

@NodeEntity
public class Users {
@Id
private Long id;
private String name;
private String dept;
private Integer age;
**getters,setters and toString method here**
}

任何帮助都将不胜感激。感谢

您还设置了User类的id值。这将使Spring Data Neo4j和用于持久性的Neo4j对象图映射器认为实体已经存在。在这种情况下,它将在现有的id(n)MATCH,并更新您在日志中看到的属性,而不是新节点CREATE

最新更新