hibernate 原生sql插入 报错

mmqw 2018-04-04 10:59:33
使用hibernate执行原生的sql语句,执行多条insert语句
报 could not execute statement 错误
执行的语句
INSERT INTO `stree`(`code`,`parent`,`name`) SELECT code,parent,name FROM stree_00049;
INSERT INTO `stree`(`code`,`parent`,`name`) SELECT code,parent,name FROM stree_00001;

语句直接在mysql中执行时可以的。
大神们遇见过类似的问题没。
...全文
444 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dong_19890208 2018-04-08
  • 打赏
  • 举报
回复
jdbc url 后面加个 ?allowMultiQueries=true 试试
mmqw 2018-04-04
  • 打赏
  • 举报
回复
引用 5 楼 u012445835 的回复:
[quote=引用 3 楼 mmqw1122 的回复:] [quote=引用 2 楼 yuxiangaaaaa 的回复:] 代码呢,看看怎么写的

		String sql ="INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00049;  INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00001;";
		Session dbss = HibernateSessionFactory.getSession();
		try
		{
			dbss.beginTransaction();
			dbss.createSQLQuery(sql).executeUpdate();
			dbss.getTransaction().commit();

		} finally
		{
			if (dbss != null)
				dbss.close();
		}
[/quote] 老哥你这个是一条sql吗
String sql ="INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00049;  INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00001;";
还能这样写吗?中间还有分号的吗? 你可吧 insert分开两次来执行,还有结尾在java代码中不要加分号了吧 [/quote] 不是只插入两个表,是有N多个表要这样处理,这个是定位问题后简化的代码。 如果分开执行的话,耗费的时间太长
心随念 2018-04-04
  • 打赏
  • 举报
回复
引用 3 楼 mmqw1122 的回复:
[quote=引用 2 楼 yuxiangaaaaa 的回复:] 代码呢,看看怎么写的

		String sql ="INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00049;  INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00001;";
		Session dbss = HibernateSessionFactory.getSession();
		try
		{
			dbss.beginTransaction();
			dbss.createSQLQuery(sql).executeUpdate();
			dbss.getTransaction().commit();

		} finally
		{
			if (dbss != null)
				dbss.close();
		}
[/quote] 老哥你这个是一条sql吗
String sql ="INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00049;  INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00001;";
还能这样写吗?中间还有分号的吗? 你可吧 insert分开两次来执行,还有结尾在java代码中不要加分号了吧
mmqw 2018-04-04
  • 打赏
  • 举报
回复
引用 2 楼 yuxiangaaaaa 的回复:
代码呢,看看怎么写的

CREATE TABLE `sweet_tree` (
  `id` bigint(20) DEFAULT NULL,
  `code` varchar(128) DEFAULT NULL,
  `parent` varchar(128) DEFAULT NULL,
  `name` varchar(156) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个是表结构
mmqw 2018-04-04
  • 打赏
  • 举报
回复
引用 2 楼 yuxiangaaaaa 的回复:
代码呢,看看怎么写的

		String sql ="INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00049;  INSERT INTO `sweet_tree`(`code`,`parent`,`name`) SELECT code,parent,name FROM sweet_tree_00001;";
		Session dbss = HibernateSessionFactory.getSession();
		try
		{
			dbss.beginTransaction();
			dbss.createSQLQuery(sql).executeUpdate();
			dbss.getTransaction().commit();

		} finally
		{
			if (dbss != null)
				dbss.close();
		}
自由自在_Yu 2018-04-04
  • 打赏
  • 举报
回复
代码呢,看看怎么写的
mmqw 2018-04-04
  • 打赏
  • 举报
回复
单条插入语句 在hibernate中执行也没有问题

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧