java - @ManyToMany 关系不保存

标签 java hibernate jpa orm many-to-many

我有一些具有@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/

相关文章:

java - 为什么 LogBack 在这种情况下不起作用

将列表转换回其类型时的 Java ClassCastException

java hibernate多个持久对象?

mysql - [Ljava.lang.Object;无法转换为 com.jules.esiee.entities.Utilisateur

java - 如何找出哪个线程在java中锁定文件?

java - 关于Java输入字符串过滤器

java - 我可以在正则表达式中组合 unicode 类别吗?

Mac OS X 上带有键盘输入的 Java Swing 全屏

java - 接缝测试 NoSuchMethodError

spring - 使用 Spring/Junit/JPA 进行依赖注入(inject)