gpt4 book ai didi

mysql - 如何在具有多个外键的 Spring boot/JPA 中构建实体?

转载 作者:行者123 更新时间:2023-11-29 05:03:03 25 4
gpt4 key购买 nike

我有一个表“Details”,其中包含来自“City”、“Town”、“branch”表的信息。它们都是一次性配置表,它们的信息是恒定的,永远不需要更新。

“详细信息”表具有来自这些表的外键引用,例如“city_id”、“town_id”、“branch_id”。

现在的问题是,“details”的数据上传时,有“City_name”、“town_name”和“branch name”。我需要将这些数据在Ids中进行转换,以便将它们存储在“details”中

我应该怎么做才能实现我的目标?

例子:

 Data uploads: "City name","town name", "branch name".

城市:

id  | City_name
1 | city name
2 | city name 2

城镇:

id  | Town_name
1 | town name
2 | town name 2

分支机构

id  | branch_name
1 | branch name
2 | branch name 2

现在,必须存储在“细节”中的数据

details_id | city_id | town_id | branch_id
1 |1 |1 |1

最佳答案

您需要获取引用的对象,然后创建实体并保存它。应该是这样的:

City foundCity = CityRepository.findByName(cityName).orElseThrow(() -> new EnityNotFoundException("City not found"));
...
Detail detail = new Detail();
detail.setCity(foundCity);
...
detailRepository.save(detail);

如果您要创建大量Details 并且引用对象的数量不是很大,您可能需要在继续之前将所有引用对象加载到内存中。喜欢

List<City> cities = cityRepository.findAll();
...

List<Detail> detailsToSave = new ArrayList<>();

City foundCity = cities.stream()
.filter(item -> name.equals(item.getName()))
.orElseThrow(() -> new EnityNotFoundException("City not found"));
...
Detail detail = new Detail();
detail.setCity(foundCity);
...
detailsToSave.add(detail);
....

detailRepository.saveAll(detailsToSave);

关于mysql - 如何在具有多个外键的 Spring boot/JPA 中构建实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176418/

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