为啥@ManyToMany 会导致 NullPointerException?

Posted

技术标签:

【中文标题】为啥@ManyToMany 会导致 NullPointerException?【英文标题】:Why an @ManyToMany should caused a NullPointerException?为什么@ManyToMany 会导致 NullPointerException? 【发布时间】:2017-07-11 15:29:36 【问题描述】:

我知道这可能太模糊了,但是在我的 jpa 实体中添加 @ManyToMany 后,什么会导致 NullPointerException?

所有代码都相同,我只删除了链接到 croos 表的实体,并修改了之前链接到该实体的两个实体,添加了@ManyToMany,因此问题不在于外部代码或数据库中。

这两个实体还通过带有第二个字段的 @OneToMany 链接。会不会是这个问题?

这是我的数据库的结构:

table1:id、name、description 和 table2_id; table2:id、名称和描述; cross_table:id、table1_id、table2_id 和时间戳

会不会是两个Set成实体Table2有问题?

我的规格是:

java8 hibernate5.2 jpa2.1

【问题讨论】:

Jpa 不会抛出任何 NullPointerException,如果 db 中不存在任何元素 jpa 将为您创建一个空的 Set,也许您在一个临时实体上操作并且没有初始化 Set @holi-java 你能告诉我更多吗?我将 fetchType 从 LAZY 更改为 EAGER,但没有任何改变... 这是您不引用或为其提供堆栈跟踪的 NPE。因此,任何人都无话可说。 @Neil Stockton 你是对的,不幸的是 stackTrace 没有帮助,我会是通用的,因为正如我在回答中所写的那样,我确信问题不在于注释并且写得太多这可能会令人困惑! 【参考方案1】:

像往常一样,对我来说,这条消息引起了误解,我认为问题是@ManyToMany 而不是我在 hibernate.cfg 中的错误,因为我只删除了实体 table1_table2 而不是 hibernate.cfg 上的映射注释! 谢谢@holi-java 的提示!

【讨论】:

以上是关于为啥@ManyToMany 会导致 NullPointerException?的主要内容,如果未能解决你的问题,请参考以下文章

ManyToMany 关系导致 *** 错误

为啥不能在 Django ManyToMany 字段上强制执行唯一性?

当我第一次检索必须在 @ManyToMany 关系中使用的对象时,为啥我会获得这个“传递给持久化的分离实体”?

Doctrine2 ManyToMany 自引用

为啥我的集合中会出现空对象多对多

Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi