从Json文件插入数据发生java.util.ConcurrentModificationException: null



我有Json文件,我读取和插入数据到我的数据库(Mysql)错误java.util.ConcurrentModificationException: null抛出在插入中间。

我迭代每个Data上的便利组集合,并将其插入到每个Data上的set Data之后。

插入函数:

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;

有人知道为什么会这样吗?

谢谢,艾丹•

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(D);
// Convert set in list and save, iterator don't can modify at runtime  error: amenity.setData(D)
}
} catch(Exception e) {}

抱歉回复,但我使用智能手机