我有一个实体(汽车),我想添加属于这个实体与邮差的记录。我的实体与User实体有一个关系连接。
当我想添加一个汽车对象到数据库,我得到一个错误:
message=not-null property references a null or transient value : com.carnft.carr.entity.Car.user;
这是我想从postman添加的实体:
@Entity
@Table(name = "car")
@Data
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@JsonView(Views.Base.class)
private String name;
@JsonView(Views.Base.class)
private String qtype;
@JsonView(Views.Base.class)
private int km;
@JsonView(Views.Base.class)
private String image;
private boolean sellStatus=false;
@ManyToOne(fetch = FetchType.LAZY,cascade = {CascadeType.ALL})
@JoinColumn(name="user_id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
User user;
}
这是Car控制器中的方法:
@PostMapping
public Car addCar(@RequestBody Car car){
return carService.addCar(car);
}
服务如下:
public Car addCar(Car car) {
return carRepository.save(car);
}
我既没有添加任何车与邮差或直接从mysql工作台。
您的属性User user
在Car
实体中有@JoinColumn(name="user_id", nullable = false)
注释,强制user
不为空。
保存Car
实体时,必须使用car.setUser(yourUserEntity)
将user
实体设置为它。现在,您的方法addCar
只保存car
与carRepository.save(car);
或者您可以从注释中删除nullable = false
。
我很久以前就遇到过同样的问题。您需要在您的设备上手动安装lombok,或者删除lombok并使用getter和setter。