2016-04-07 69 views
4

我正在從一個表中獲取數據並想要插入到其他表中。 第一個包含很多字段的表,如果要存儲在新表中,我只需要一些字段。爲此,我使用Hibernate查詢。 我能夠從查詢獲取結果,但是當我嘗試插入到其他表扔org.hibernate.hql.internal.QueryExecutionRequestException:不支持DML操作[插入到

org.hibernate.hql.internal.QueryExecutionRequestException:不支持DML操作[插入

下面是拋出異常的代碼。

Query query=session.createQuery(" insert into CustomerMailAddress (subs_id,mail_Id) SELECT DISTINCT subs_id, email_id FROM SubcriberModel WHERE subs_id IS NOT NULL AND email_id IS NOT NULL AND email_id <> ''"); 
List result = query.list(); 
int res = query.executeUpdate(); 
System.out.println("Command successfully executed...."); 
System.out.println("Numer of records effected...,"+result.size()); 

當我運行下面的代碼而不使用query.executeUpdate();方法

Query query=session.createQuery(" SELECT DISTINCT subs_id, email_id FROM SubcriberModel WHERE subs_id IS NOT NULL AND email_id IS NOT NULL AND email_id <> '' UNION ALL SELECT DISTINCT tbl_subscribers_subs_id, email_id FROM SocialProfileModel WHERE tbl_subscribers_subs_id IS NOT NULL AND email_id IS NOT NULL AND email_id <> ''"); 
List result = query.list(); 

出把上面的代碼是 命令執行成功.... NUMER的影響記錄...,21。

回答

2

如果你正在做的插入或更新,你應該只調用

query.executeUpdate(); 

,而不是

query.list(); 

嘗試像這樣(你缺少的選擇部分的別名,所以Hibernate是困惑subs_id):

Query query=session.createQuery("insert into CustomerMailAddress (subs_id, mail_Id)"+"SELECT DISTINCT m.subs_id, m.email_id FROM SubcriberModel m WHERE m.subs_id IS NOT NULL AND m.email_id IS NOT NULL AND m.email_id <> ''"); 
int res = query.executeUpdate(); 
System.out.println("Command successfully executed...."); 
System.out.println("Numer of records effected...,"+result.size()); 
+0

我刪除了query.list();並再次運行該程序,但問題仍然存在。 – Vaibs

+0

@Vaibs在我編輯的答案中試試代碼 –

+0

我試過上面的代碼拋出異常org.hibernate.hql.internal.ast.QuerySyntaxException:期望OPEN,在第1行第33列附近找到'a'[插入到 – Vaibs