重复录入' 1-8'关键' PRIMARY'

时间:2016-09-08 16:08:58

标签: java mysql spring hibernate jpa

我在使用关系对象保存对象时遇到问题。

这是数据库的简短截图。

enter image description here

我在数据库中已有几个品牌。我有很多smarthfones作为JSON数据,我想把它推送到数据库。这些智能手机是类似的品牌。

Smartphone smartphone = new Smartphone();

String deviceName = array.getJSONObject(i).getString("DeviceName");
smartphone.setName(deviceName);
...
//other related objects
...
String brandValue = array.getJSONObject(i).getString("Brand");
Brand brand = brandService.findByName(brandValue);  // get brand from database by name
smartphone.setBrandId(brand);
smartphoneService.saveSmartphone(smartphone);

我从名字中获取品牌并为智能手机设置品牌。在包括smathpone所需的所有对象后,我保存智能手机。我收到了错误 Duplicate entry '1-8' for key 'PRIMARY'这与品牌有关,因为数据库中有8个品牌。

我尝试将级联类型更改为PERSIST,ALL,RFRESH并且我始终保持相同。

@Entity
public class Smartphone {
    @Id
    @Column(name = "id")
    public int getId() {
        return id;
    }

    @ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.REFRESH)
    @JoinColumn(name = "brand_id", referencedColumnName = "id", nullable = false)
    public Brand getBrandId() {
        return brandId;
    }

    public void setBrandId(Brand brandId) {
        this.brandId = brandId;
    }
}

@Entity
public class Brand {
    @Id
    @Column(name = "id")
    public int getId() {
        return id;
    }

    @LazyCollection(LazyCollectionOption.FALSE)
    @OneToMany(mappedBy = "brandId")
    public Collection<Smartphone> getBrandId() {
        return brandId;
    }

    public void setBrandId(Collection<Smartphone> brandId) {
        this.brandId = brandId;
    }
}

0 个答案:

没有答案