【发布时间】:2015-01-13 19:56:02
【问题描述】:
我有 2 个课程:司机和汽车。汽车表在单独的过程中更新。我需要的是在 Driver 中有一个属性,它允许我阅读完整的汽车描述并只写指向现有汽车的 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);
}
}
Car 对象只是典型的 JPA 对象,没有对 Driver 的反向引用。
所以我试图通过这个实现的是:
- 我可以使用详细的 JSON 视图阅读完整的汽车描述
- 或者我只能在 Short JsonView 中读取汽车的 ID
- 最重要的是,在创建新驱动程序时,我只想传入汽车的 JSON ID。 这样我就不需要在持久化期间对 Car 进行不必要的读取,而只需更新 Id。
我收到以下错误:
object references an unsaved transient instance - save the transient instance before flushing : com.Driver.car -> com.Car
我不想更新数据库中的汽车实例,而只是从驱动程序中引用它。知道如何实现我想要的吗?
谢谢。
更新: 忘了说我在创建 Driver 时传递的 Car 的 ID 是 DB 中现有 Car 的有效 ID。
【问题讨论】:
标签: java hibernate jpa many-to-one