Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernte错误=>;EntityExistsException:具有相同标识符值的不同对象已与会话关联_Java_Spring Boot_Hibernate_Api - Fatal编程技术网

Java Hibernte错误=>;EntityExistsException:具有相同标识符值的不同对象已与会话关联

Java Hibernte错误=>;EntityExistsException:具有相同标识符值的不同对象已与会话关联,java,spring-boot,hibernate,api,Java,Spring Boot,Hibernate,Api,我试图从SpringBootAPI在数据库中插入一个新对象,但调用PostMapping时出错 控制器 @PostMapping("/users/{userId}/vehicules") public ResponseEntity<String> insertVehicule(@PathVariable Integer userId, @RequestBody Vehicule body) { Utilisateur utilisa

我试图从SpringBootAPI在数据库中插入一个新对象,但调用PostMapping时出错

控制器

    @PostMapping("/users/{userId}/vehicules")
    public ResponseEntity<String> insertVehicule(@PathVariable Integer userId, @RequestBody Vehicule body) {
        Utilisateur utilisateur = UserRepository.getOne(userId);
        VehiculeRepository.save(new Vehicule(VehiculeRepository.findAll().size()+1,body.getMarque(),body.getModele(),body.getImmatriculation(),
                body.getMiseEnCirculation(),body.getNombreKilometre(),utilisateur,body.getComposants()));
        return new ResponseEntity("Hello",HttpStatus.OK);
    }
@PostMapping(“/users/{userId}/vehiclules”)
公共响应插入车辆(@PathVariable Integer用户标识,@RequestBody车辆主体){
utisulateur-utisulateur=UserRepository.getOne(userId);
VehicleRepository.save(新车辆)(VehicleRepository.findAll().size()+1,body.getMarque(),body.getModele(),body.getImmatriculation(),
body.getMiseCirculation(),body.getNombrekm(),Usilizateur,body.getComposants();
返回新的ResponseEntity(“Hello”,HttpStatus.OK);
}
等级车辆

public class Vehicule   {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id = null;

    @Column(name="marque")
    private String marque = null;

    @Column(name="modele")
    private String modele = null;

    @Column(name="immatriculation")
    private String immatriculation = null;

    @Column(name="miseEnCirculation")
    private String miseEnCirculation = null;

    @Column(name="nombreKilometre")
    private String nombreKilometre = null;
    
    @JsonIgnore
    @ManyToOne
    @JoinColumn(name = "userId")
    private Utilisateur user = null;

    @Transient
    private List<Composant> composants = null;
}
公共级车辆{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有整数id=null;
@列(name=“markue”)
私有字符串marque=null;
@列(name=“modele”)
私有字符串modele=null;
@列(name=“无刺激”)
私有字符串未加密=null;
@列(名称=“误循环”)
私有字符串错误循环=null;
@列(name=“nombrekm”)
私有字符串nombrekm=null;
@杰索尼奥雷
@许多酮
@JoinColumn(name=“userId”)
私用用户用户=null;
@短暂的
私有列表组件=null;
}
谢谢你的帮助
祝您愉快

如果您在控制器内设置了id,JPA将尝试更新它而不是保存实体,那么您将得到异常,因为它不存在。JPA将在创建时生成id

@PostMapping("/users/{userId}/vehicules")
public ResponseEntity<String> insertVehicule(@PathVariable Integer userId, @RequestBody Vehicule body) {
    Utilisateur utilisateur = UserRepository.getOne(userId);
    VehiculeRepository.save(new Vehicule(null,body.getMarque(),body.getModele(),body.getImmatriculation(),
            body.getMiseEnCirculation(),body.getNombreKilometre(),utilisateur,body.getComposants()));
    return new ResponseEntity("Hello",HttpStatus.OK);
}
@PostMapping(“/users/{userId}/vehiclules”)
公共响应插入车辆(@PathVariable Integer用户标识,@RequestBody车辆主体){
utisulateur-utisulateur=UserRepository.getOne(userId);
VehicleRepository.save(新车辆)(null,body.getMarque(),body.getModele(),body.getImmagiculation(),
body.getMiseCirculation(),body.getNombrekm(),Usilizateur,body.getComposants();
返回新的ResponseEntity(“Hello”,HttpStatus.OK);
}

当我将setId更改为Null时,我有一个PK违规行为。您的数据库是什么?如何声明主键?确保id列标记为具有自动增量的主键。根据数据库的不同,您应该使用GenerationType.IDENTITY或SEQUENCEYes。这是我的Postgre数据库。这些表是在我运行api时自动生成的。ID被声明为主键,但我认为没有自动递增。但我认为不可能在生成后更新colunm属性