JDBC里的return_generated_keys问题,在SSH整合框架中怎么解决??

问题描述

代码如下:String sql="insert into article values(null,0,?,?,?,now(),0)"; conn=DB.getConn();conn.setAutoCommit(false);pstmt=DB.prepareStmt(conn, sql,Statement.RETURN_GENERATED_KEYS);pstmt.setInt(1, rootId);pstmt.setString(2, t.getTitle());pstmt.setString(3, t.getCont());pstmt.executeUpdate();ResultSet rsKeys=pstmt.getGeneratedKeys();if(rsKeys.next()){rootId=rsKeys.getInt(1);}stmt=DB.createStmt(conn);stmt.executeUpdate("update article set rootid="+rootId+" where id="+rootId);conn.commit();注:这是一个BBS项目,数据库article表:id auto_increment,pid, //被回复帖子的IDrootid, //根帖ID 就是主题IDtitle,cont,pdate,isleaf大家看的懂吧??我想插入一条BBS根主题,那么他的rootid就应该是他自己的id,而id 又是auto_increment的。。这项目要用SSH框架整合的话,这问题怎么解决??? 问题补充:用Hibernate这样写可以吗??int id=Integer.parseInt(sessionFactory.getCurrentSession().save(t).toString());sessionFactory.getCurrentSession().createQuery("update from Theme t set t.rootid="+id+" where t.id="+id).executeUpdate();好像Session的save()方法返回的就是一个the generated identifier、、、??大家这样写过吗??

解决方案

这项目要用SSH框架整合的话,这问题怎么解决??? 一条搞不定 (可以写触发器 但麻烦)既然这样让rootid = 0 为根 不是更简单? 这样查主题贴就是rootid=0的
解决方案二:
sessionFactory.getCurrentSession().save(t);//这个时候t的id字段已经有值了,就是刚刚保存时产生的id值 所以后面直接通过t.getId()就能取到值了
解决方案三:
既然都可以判断是否是根贴了,那不设就是了。只是那列该不会有 not null 制约吧?而且后续的逻辑都要改,rootid=null时,使用id。这个主意,有待商榷...
解决方案四:
Statement.RETURN_GENERATED_KEYS这玩意在hibernate中是需要配置的,需要设置属性:hibernate.jdbc.use_get_generated_keys=true(默认为false)这样配置之后,就通过PreparedStatement.getGeneratedKeys()生成主键。你的这段语句,在hibernate中,首先按照上面配置,然后再通过po对象(即Article)获得这个id值,然后在根据id值写hql语句更新

时间: 2024-11-08 19:13:42

JDBC里的return_generated_keys问题,在SSH整合框架中怎么解决??的相关文章

图片-Java SSH整合框架.tomcat能正常跑,没问题.用junit测试却报配置错误.

问题描述 Java SSH整合框架.tomcat能正常跑,没问题.用junit测试却报配置错误. 配置如第一张图. 报错如下面两张. new ClassPathXmlApplicationContext("applicationContext.xml");junit初始化配置时出现的问题.最后导致beanFactory.containsBean("Sys_UserDao")为fasle 解决方案 不是已经说了没有引人hibernate属性文件啊, 解决方案二: 你的

ssh整合-求回答求解决,百度上没有

问题描述 求回答求解决,百度上没有 严重: Developer Notification (set struts.devMode to false to disable this message): Unexpected Exception caught setting 'age' on 'class action.VarietyJsonAction: Error setting expression 'num' with value ['5', ] 解决方案 不知道自己是不是忘记了 解决方案二

SSH三大框架中单选按钮问题

问题描述 <tdclass="l_name">是否启用:</td><td><inputtype="radio"id="status"value="yes"name="statusid"checked="checked"><spanclass="green">启用</span>      <i

SSH整合学习笔记之spring与hibernate简单整合.doc

SSH整合学习笔记 大致的学习了一下struts1.x struts2.x  spring2.5 hibernate3.6,觉得东西很多,好些东西都记不住,最后发现想记住的方法就是多练习.自己多写一下简单的工程也会把这些知识巩固,但是公司现在不用这个,所以只能记下笔记,不忙的时候再拿来看看,坚持的练习一下.我也是初学,所以只是记下一些基础的东西,如果写错了什么,请朋友多多指出. 个人对SSH的理解也不算深入,只是大概的学完一圈觉得spring很强大,有的人觉得spring很难学,但是我觉得str

android开发-SSH整合问题Unable to instantiate Action

问题描述 SSH整合问题Unable to instantiate Action 问题:Unable to instantiate Action, userAction, defined for 'user-userLogin' in namespace ''userAction 不知道哪里问题,网上的方法试了好多遍,都没解决,客户端只能停留在登录界面,无法登录成功,无法访问服务器,求大神指教 Struts.xml <?xml version="1.0" encoding=&qu

MyEclipse整合ssh三大框架环境搭载用户注册源码下载_java

前言 SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据持久层和域模块层(实体层). Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持.Spring一方面作为一个轻量级的IoC容器,负责查找.定位.创建和管理对象及

jbpm4.4整合SSH 在tomcat中启动后控制台一直查询JBPM4_JOB表

问题描述 jbpm4.4整合SSH 在tomcat中启动后控制台一直查询JBPM4_JOB表 jbpm4.4整合SSH 在tomcat中启动后控制台一直查询JBPM4__JOB表,_这是正常现象吗,应该这么解决呢????求解答 解决方案 http://download.csdn.net/detail/freedomky/4300308 是不是有业务需要重复执行. 解决方案二: 不会呀 我只整合好了SSH还没什么都没做呢 知识启动了tomcat 我的applicationContext.xml:

注解-麻烦帮我看下SSH整合遇到的问题

问题描述 麻烦帮我看下SSH整合遇到的问题 最近公司要用SSH注解开发 我做了个小demo但是导入Easy UI的时候出现这个错误 解决方案 看样子是你代码里的EasyUI的引入路径写错了.可以把代码贴出来看下. 解决方案二: <link rel="stylesheet" type="text/css" href="/EasyUI/themes/default/easyui.css"> <link rel="style

ssh整合的时候报的异常加载不了配置文件

问题描述 ssh整合的时候报的异常加载不了配置文件 整合ssh的时候出现的毛病,希望大神能够帮忙解决 严重: Exception starting filter struts2 Unable to load configuration. - package - file:/D:/jsp/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/ssh/WEB-INF/classes/struts.xml:11:68 at org