2016-04-07 23 views
4

私はあるテーブルからデータを取り込み、別のテーブルに挿入したいと思います。 最初のテーブルには多くのフィールドが含まれていましたが、新しいテーブルに格納するフィールドがいくつか必要でした。そのために私はHibernateクエリを使用しています。 私はクエリから結果を取得することができていますが、私は他のテーブルに挿入しようとすると、それはorg.hibernate.hql.internal.QueryExecutionRequestException:DML操作ではサポートされていません[insert into

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です。 Hibernateがあるので

答えて

2

あなたが挿入または更新を行っている場合にのみ、あなたが選択部分に別名が欠落している(このようにしてみ

query.executeUpdate(); 

なく

query.list(); 

を呼び出す必要がありますsubsidによって混乱しています):

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()を削除しました。プログラムをもう一度実行してください。しかし、依然としてpersistを発行してください。 – Vaibs

+0

@Vaibs私の編集した答えのコードを試してください –

+0

私は上記のコードを投げて例外org.hibernate.hql.internal.ast.QuerySyntaxExceptionを期待しています:OPENが見つかると、 '1'列33の近くに見つかりました[insert into – Vaibs

関連する問題