gpt4 book ai didi

java - 如何使用具有特定id的Spring Data Neo4j存储库保存方法?

转载 作者:行者123 更新时间:2023-12-02 00:35:08 25 4
gpt4 key购买 nike

我正在使用Neo4j创建图表。以下代码是 spring data Neo4j 的示例。当没有提供 id 属性值时,我可以保存节点实体。

但是如何保存具有特定 id 属性值的节点条目呢?

模型类:

@Data
@NodeEntity
public class Person {

@Id
@GeneratedValue
private Long id;
private String name;
private String title;

@Relationship(type = "ACTED_IN")
private List<Movie> movies = new ArrayList<>();
}

存储库类

public interface PersonRepository extends Neo4jRepository<Person, Long> {

@Query("MATCH (n:Person {name:{name}}) RETURN n")
List<Person> findByName(@Param("name") String name);
}

Controller 类

@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonRepository personRepository;

@PostMapping("/save")
public Map save(@RequestBody Person person) {
Map resultMap = new HashMap();
String code = "200";
String msg = "success";
// It can save success when no id property value is provided
Person savedPerson = personRepository.save(person);
resultMap.put("code", code);
resultMap.put("msg", msg);
resultMap.put("data", savedPerson);
return resultMap;
}
}

最佳答案

我已经成功尝试过,并且可以轻松完成,只要“id”应该是

String not Long

域/DAO 类:

 @Id
@GeneratedValue(strategy = Neo4JCustomIdStrategy.class)
String id;

存储库类:

@Repository

public interface PersonRepository extends Neo4jRepository<Person, String>{
}

最后,策略的自定义实现:

public class Neo4JCustomIdStrategy implements IdStrategy {

@Override
public Object generateId(Object entity) {
return String.valueOf(entity.hashCode());
}
}

我使用的库是 spring-data-neo4j

关于java - 如何使用具有特定id的Spring Data Neo4j存储库保存方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57984791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com