【问题标题】:Inserting data from Json file occurred java.util.ConcurrentModificationException: null从 Json 文件插入数据发生 java.util.ConcurrentModificationException: null
【发布时间】: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


    【解决方案1】:
    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) {}
    

    抱歉,我正在使用智能手机

    【讨论】:

    • 始终解释您为解决问题所做的更改。
    猜你喜欢
    • 2019-02-24
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多