Spring: Not-null属性引用空值或瞬态值



我有一个实体(汽车),我想添加属于这个实体与邮差的记录。我的实体与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 userCar实体中有@JoinColumn(name="user_id", nullable = false)注释,强制user不为空。

保存Car实体时,必须使用car.setUser(yourUserEntity)user实体设置为它。现在,您的方法addCar只保存carcarRepository.save(car);

或者您可以从注释中删除nullable = false

我很久以前就遇到过同样的问题。您需要在您的设备上手动安装lombok,或者删除lombok并使用getter和setter。

相关内容

  • 没有找到相关文章