不同的Dao层之间有两个方法都有one或者many关系,并且相互调用,例如:
1.我写了一个博客系统,为了让博客文章下面显示与文章相匹配的评论,所以我给文章类加了一个成员变量->评论类的集合,在Dao层通过ID查询文章的时候在返回结果集里面通过文章id一个many关系查询与之相关的所有评论。2.为了知道评论是针对哪个文章的,我又给评论类添加了一个成员变量->文章类,在评论类的dao层查询所有评论的语句的返回集里添加了one关系,通过评论表中的文章id查询文章, 这是我们常常会遇到的问题(仅代表个人),很显然,这里两个语句出现了相互调用,于是触发任何一句都会无限循环相互调用,这样就会导致一大串重复的数据塞到json里返回回来,然后浏览器就爆掉了(GAMEOVER (✪ω✪))。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200711101643370.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMzY1NTM0,size_16,color_FFFFFF,t_70) 解决方法:
这些类的使用是有主次的,很显然通过id查询博客的详细信息带上评论是有必要的,而查询所有的评论带上文章信息是次要的,我们可以在通过id查询评论的详细信息中带上博客信息即可,所以我们可以这样解决:
1.将查询所有评论中通过文章id查询文章的语句去掉。2.如果硬是需要文章,那么可以在文章dao中国专门创建一个用于返回给评论文章的语句,但在语句中不查询与之相关的所有评论。
|