我有一些具有@ManyToMany
关系的实体:
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "buses_drivers",
joinColumns = @JoinColumn (name = "driver_id_inner", referencedColumnName = "driver_id"),
inverseJoinColumns = @JoinColumn (name = "bus_id_inner", referencedColumnName = "bus_id"))
private List<Bus> buses;
和
@ManyToMany(mappedBy = "buses", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Driver> drivers;
当用一些Bus
模型执行保存Driver
模型时,一切正常。表 buses_drivers
存储那些实体的所有键。但是当用驱动程序保存 Bus
模型时,表不会改变。我认为 inverseJoinColmns
映射有问题。
最佳答案
这是预期的行为。在双向多对多关联中,一侧必须是另一侧。在您的情况下,它是 Bus
端,因为它包含 mappedBy
:
The field that owns the relationship. Required unless the relationship is unidirectional.
这意味着 Driver
是关联的所有者,Hibernate 只会在维护关联时检查这一方。
关于java - @ManyToMany 关系不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239030/