我在Spring Roo中定义了两个实体之间的双向多对一关系。
@RooEntity
public class Car {
@OneToMany(mappedBy="car")
private Set<Wheel> wheels = new HashSet<Wheel>();
}
@RooEntity
public class Wheel {
@ManyToOne
@JoinColumn (name = "wheels_fk")
private Car car;
}
所有者方(轮)的更改将保留。
当我尝试从Car-entity更新任何东西时,它不起作用。
我该怎么办?
答案 0 :(得分:3)
答案是问题:协会的所有者方是Wheel,而Hibernate只会使用所有者方来决定是否存在关联。更新非所有者方时应始终更新所有者方(反之亦然,如果您需要连贯的对象图)。最强大的方法是将其封装在Car实体中:
public void addWheel(Wheel w) {
this.wheels.add(w);
w.setCar(this);
}
public void removeWheel(Wheel w) {
this.wheels.remove(w);
w.setCar(null);
}
public Set<Wheel> getWheels() {
// to make sure the set isn't modified directly, bypassing the
// addWheel and removeWheel methods
return Collections.unmodifiableSet(wheels);
}