【发布时间】:2015-04-24 13:03:38
【问题描述】:
我正在开发一个休眠项目,并且我在 Car 和 CarDriver 之间建立了 @ManyToMany 关系。问题是这种关系也有属性,所以我使用了一个单独的实体,连接到 Car 和 CarDriver,这个实体称为 CarUsage。
我的问题是当我持久化一个 CarUsage 对象时,Car 和 CarDriver 中的 CarUsage 列表没有填充这个新对象。
这是我的实体:
汽车:
@Entity
@Table(name = "car")
@Inheritance(strategy = InheritanceType.JOINED)
public class Car extends BaseEntity {
@Column(name = "registration_plate")
private String registrationPlate;
@OneToMany(mappedBy="car")
private List<CarUsage> carUsages;
public String getRegistrationPlate() {
return registrationPlate;
}
public void setRegistrationPlate(String registrationPlate) {
this.registrationPlate = registrationPlate;
}
public List<CarUsage> getCarUsages() {
return carUsages;
}
public void setCarUsages(List<CarUsage> carUsages) {
this.carUsages = carUsages;
}
}
汽车司机
@Entity
@Table(name="car_driver")
public class CarDriver extends BaseEntity {
@OneToMany(mappedBy="carDriver")
private List<CarUsage> carUsages;
public List<CarUsage> getCarUsages() {
return carUsages;
}
public void setCarUsages(List<CarUsage> carUsages) {
this.carUsages = carUsages;
}
}
还有我的 JoinTable CarUsage:
@Entity
@Table(name = "car_usage")
public class CarUsage extends BaseEntity {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "car_id")
private Car car;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "car_driver_id")
private CarDriver carDriver;
@Column(name = "start_date")
private Date startDate;
@Column(name = "end_date")
private Date endDate;
@Column(name = "active", nullable = false)
private boolean active;
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public CarDriver getCarDriver() {
return carDriver;
}
public void setCarDriver(CarDriver carDriver) {
this.carDriver = carDriver;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
}
当我持久化新的 CarUsage 时,Car 和 CarDriver 中的列表不会更新。
CarUsage carUsage = carUsageCreator.makeCarUsage(companyCar, carDriver, new Date(), new Date(), true);
carUsageDao.persist(carUsage);
有谁知道我做错了什么?
【问题讨论】:
标签: java hibernate jpa one-to-many many-to-one