JPA 多对一关系 - 只需要保存 Id
2022-09-01 00:50:55
我有2个班级:司机和汽车。汽车表在单独的流程中更新。我需要的是司机中的属性,允许我阅读完整的汽车描述,并只写指向现有汽车的ID。下面是一个示例:
@Entity(name = "DRIVER")
public class Driver {
... ID and other properties for Driver goes here .....
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "CAR_ID")
private Car car;
@JsonView({Views.Full.class})
public Car getCar() {
return car;
}
@JsonView({Views.Short.class})
public long getCarId() {
return car.getId();
}
public void setCarId(long carId) {
this.car = new Car (carId);
}
}
汽车对象只是典型的 JPA 对象,没有对驱动程序的反向引用。
因此,我试图通过这个实现的是:
- 我可以使用详细的JSON视图阅读完整的汽车描述
- 或者我只能在简短的JsonView中读取汽车的Id
- 最重要的是,在创建新的驱动程序时,我只想传递汽车的JSON ID。这样,我不需要在持久化期间为汽车进行不必要的读取,而只需更新Id即可。
我收到以下错误:
object references an unsaved transient instance - save the transient instance before flushing : com.Driver.car -> com.Car
我不想在数据库中更新汽车的实例,而只是从驱动程序中引用它。任何想法如何实现我想要的?
谢谢。
更新:忘记提到我在创建驱动程序期间通过的汽车的ID是DB中现有汽车的有效ID。