【发布时间】:2021-08-15 11:17:45
【问题描述】:
我有 Json 文件,我读取该文件并将数据插入我的数据库 (Mysql) 错误 java.util.ConcurrentModificationException: null 在插入的中间抛出。
我在每个数据上迭代舒适组的集合,并将其插入到每个数据的集合之后。
插入函数:
try {
BufferedReader br;
br = new BufferedReader(new FileReader("/Users/idanazulay/Desktop/Hotels-river/Hotel data dump/test.json"));
String line = br.readLine();
ObjectMapper om = new ObjectMapper();
int i = 0;
while (line != null) {
Data D = om.readValue(line, Data.class);
rootRepository.save(om.readValue(line, Data.class));
for (Iterator<AmenityGroup> ag = D.getAmenity_groups().iterator(); ag.hasNext();) {
AmenityGroup amenity = ag.next();
amenity.setData(D);
amenityGroupRepository.save(amenity);
}
我的实体:
数据:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long rootId;
private String address;
private String check_in_time;
private String check_out_time;
@OneToMany(mappedBy = "data", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH, CascadeType.DETACH}, orphanRemoval = true)
private Set<DescriptionStruct> description_struct;
private String id;
@ElementCollection
private Set<String> images;
private String kind;
private double latitude;
private double longitude;
private String name;
private String phone;
@Embedded
private Star_certificate star_certificate;
private String postal_code;
//@AttributeOverrides({ @AttributeOverride(name = "name", column = @Column(name = "room_group")) })
@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "R_ID")),
@AttributeOverride(name = "name", column = @Column(name = "R_NAME")) })
@Embedded
private Region region;
private int star_rating;
private String email;
private int semantic_version;
@ElementCollection
private Set<String> serp_filters;
private boolean is_closed;
@Embedded
private MetapolicyStruct metapolicy_struct;
private String metapolicy_extra_info;
// private StarCertificate star_certificate;
@Embedded
private Facts facts;
@ElementCollection
private Set<String> payment_methods;
private String hotel_chain;
@OneToMany(mappedBy = "data", cascade = CascadeType.ALL)
private Set<AmenityGroup> amenity_groups;
@OneToMany(mappedBy = "data", cascade = CascadeType.ALL)
private Set<RoomGroup> room_groups;
@OneToMany(mappedBy = "data", cascade = CascadeType.ALL)
private Set<PolicyStruct> policy_struct;
public Set<PolicyStruct> getPolicy_struct() {
return policy_struct;
}
便利设施组:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@ElementCollection
private Set<String> amenities;
private String group_name;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "root_id")
private Data data;
有人知道为什么会这样吗?
谢谢, 伊丹
【问题讨论】:
标签: java mysql hibernate jpa read-write