hibernate执行多对多关联查询时,关联表数据被删除

本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑

S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个表的中间表数据被删除,麻烦各位大牛看一下,很急,解决立马结贴,谢谢了!

ZqAdminPermission.hbm.xml

ZqAdminModules.hbm.xml

根据ID查询ZqAdminPermission表中的数据时,应自动将关联的ZqAdminModules数据查出,结果这两个表的关联表的数据自动被删除了,导致查询得到了空集合

public ZqAdminPermission findById(final String id) {

ZqAdminPermission zqAdminPermission = getHibernateTemplate().execute(new HibernateCallback() {

public ZqAdminPermission doInHibernate(Session session) throws HibernateException,SQLException {

String hql = "from ZqAdminPermission zap where zap.adminPermissionId=:id";

Query query = session.createQuery(hql);

query.setString("id", id);

List list = query.list();

if(list.size()==0) return null;

return (ZqAdminPermission)list.get(0);

}

});

return zqAdminPermission;

}

------解决方案--------------------

楼主为何要用hibernateCallBack

直接用getHibernateTemplate().find(String query,Object... values)

------解决方案--------------------

------解决方案--------------------

ZqAdminPermission zqAdminPermission = getHibernateTemplate().execute(new HibernateCallback() {

这个

HibernateTemplate执行execute(new HibernateCallback())方法,从HibernateCallback中得到session,在此session中做多个操作,并希望这些操作位于同一个事务中。

回调实际就是一种事件触发模式,就象连环地雷一样,一旦触发一个,这个再触发另外一个,你在find这个方法被执行时,希望同时执行其他方法,就需要回调。

楼主不需要执行多个方法就不用加这个回调的东西了吧!

------解决方案--------------------

引用:新建的类库,还没写删除的方法,目前只是刚要读取一个列表数据,设计的时候是多对多的

楼主,把hibernate的配置信息发上来。

hibernate.cfg.xml

其中有项:

update

你可能设置成:

delete

java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除相关推荐

  1. 数据操作日志记录表设计、可以查询、恢复历史数据记录

    数据操作日志记录表设计.可以查询.恢复历史数据记录 摘要:在日常开发中,我们经常会遇到这样的需求,产品希望用户对业务系统的所有操作都做日志记录,尤其是涉及到修改.删除的时候,更应该,因为用户在操作系统 ...

  2. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...

    MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办 发布时间:2020-07-20 13:45:46 来源:亿速云 阅读:57 作者:小猪 这篇文章主要为大家展示了MySQL数据库意外崩溃导致表 ...

  3. mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)

    子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...

  4. mysql数据库实验查询_MySQL数据库表数据的查询操作实验

    实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...

  5. Hibernate使用createSqlQuery进行模糊查询时找不到数据

    1. 首先明确一点,使用createSqlQuery如下两种方式的占位符都可以使用,这个在官方的文档可以查到. 注意使用模糊查询时,赋值两边不可以添加单引号. Query query = sess.c ...

  6. SELECT高级查询——连接查询、子查询(多表数据查询)

    在实际中,经常是从多张表中查询数据.本节学习多表连接查询.子查询等高级SELECT语句的应用. 1.简单连接查询 多表查询是指SELECT命令中显示的列来源于多个数据表: 连接查询将多个表以某个或某些 ...

  7. mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?

    在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...

  8. mysql 查询多个记录查询_MySQL多表数据记录查询详解

    在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...

  9. 增删改查操作下锁的相关情况_查询时的锁分析

    此系列主要分析在增删改查操作下,表是否有索引等情况下,锁的申请使用情况,研究分析并用于语句调优,数据库优化,死锁堵塞分析等:由于时间问题,该篇只分析查询的情况,下篇继续分析 锁的种类 首先,先了解下数 ...

最新文章

  1. android 不固定指示器,Android简单的页面指示器
  2. H3C LMI协议标准
  3. Qt Creator在桌面上预览
  4. 昆西·拉森的净资产是多少?
  5. 受保护的属性无法直接读取
  6. linux消息总线日志,linux – 解密继续mpt2sas系统日志消息
  7. 信息学奥赛C++语言: 将字符串中的小写字母转换成大写字母
  8. uni map 实时记录轨迹_北斗GPS汽车行车记录仪,部标808商用轿车专用
  9. RSA加密、解密、签名、校验签名
  10. 深度学习2.0-23.Keras高层接口之模型的加载与保存
  11. javaWeb基于SSM框架学生信息管理系统项目完整源码附带部署教程
  12. 立创开源 | 基于stm32的稳定输出9v的双向DCDC自动稳压系统
  13. linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
  14. 485芯片RO 口收不到信号问题分析
  15. DELL服务器运行硬件检测
  16. SQL Server中默认的数据库及作用
  17. Vue 做调查问卷简单实例
  18. 苹果手机注册时显示链接服务器出现问题,苹果连接服务器出现问题怎么办_苹果id连接到服务器时出现问题的解决方法...
  19. IE浏览器打不开解决办法
  20. 怎么恢复格式化的sd卡呢?

热门文章

  1. php开发支持的文件类型整理
  2. Http://selboo.com.cn
  3. 入中继限呼的方法之一
  4. 计算机组成原理第3章-存储系统
  5. tcp/ip 协议栈Linux源码分析四 IPv4分片 ip_fragment函数分析
  6. ambari hive mysql_ambari方式安装hadoop的hive组件遇到的问题
  7. 信息检索报告_iFixR:缺陷报告驱动程序修复
  8. mysql 5.8 新特性_MySQL 5.4的新特性解析
  9. nexus5 刷原装android,nexus5 刷回原生系统
  10. flex 平铺布局_CSS3 Flex布局(伸缩布局盒模型)学习