日期:2014-05-17  浏览次数:20746 次

请教Hibernate 查询
表A 和表B是一对多的关系 
表A是一个过度表 有主键ID
表B是一个结果表,也有主键,且其中一个属性是A的主键
把表A的数据删掉之后 用find查询表B 报错 :No row with the given identifier exists:  

请问是什么问题啊?

------解决方案--------------------
级联关系吧,可能是将表A删了的同时将表B也删了。你可以找找一对多关系的关系情况
------解决方案--------------------
持久层 配置了级联关系 如 多对一~~
------解决方案--------------------
将hibernate的配置文件中表的对应关系 manytoOne 或oneToMany去掉
------解决方案--------------------
探讨

将hibernate的配置文件中表的对应关系 manytoOne 或oneToMany去掉

------解决方案--------------------
在映射文件里面你配置了 one to maney,产生了级联,那个数据没了,肯定报错啊。。。
------解决方案--------------------
在你做onetomany映射的时候使用了级联,当你删除A表中的数据的时候会级联删除B表中对应的数据,看看你的映射文件或者annotation。
------解决方案--------------------
hbm.xml中你的配置少写了一选项,
onetomany映射的时候你使用了级联,再删除表的时候要注意顺序
------解决方案--------------------
好像有两种可能:
1,你的B表对应的A的id外键没有,这样你A表的数据删掉了,B表对应的A表的id还有,所以调用find报错。
2,hibernate你没配置级联删除,就是删除A的同时,要同时删除A所管理的B。