検索

13.4.3. INSERT ステートメントについて

download PDF
HQL は、INSERT ステートメントを定義する機能を追加します。これと同等の JPQL はありません。HQLINSERT ステートメントの BNF は次のとおりです。
insert_statement ::= insert_clause select_statement

insert_clause ::= INSERT INTO entity_name (attribute_list)

attribute_list ::= state_field[, state_field ]*
tribute_list は、SQL INSERT ステートメントの column specification に似ています。マッピングされた継承に関連するエンティティーでは、名前付きエンティティーに直接定義された属性のみが attribute_list で使用できます。スーパークラスプロパティーは許可されておらず、サブクラスプロパティーは意味を成しません。つまり、INSERT ステートメントは本質的にはポリモーフィックではありません。
警告
select_statement には、有効な HQL 選択クエリーを使用できます。この場合、戻り値のタイプは挿入で想定されるタイプと一致する必要があります。現在、これは、チェックによるデータベースへの再参照を許可するのではなく、クエリーのコンパイル時に確認されます。これにより、equal ではなく equivalent である Hibernate タイプ間で問題が発生する可能性があります。たとえば、これは org.hibernate.type.DateType としてマップされた属性と org.hibernate.type.TimestampType として定義された属性の間でミスマッチの問題を引き起こす可能性があります。
id 属性には、insert ステートメントに 2 つのオプションを付与します。attribute_listid プロパティーを明示的に指定することができます。この場合、その値は、対応する select 式から取得されるか、または生成された値が使用される場合は attribute_list から省略されます。後者のオプションは、データベースで (in the database) で動作する ID ジェネレーターを使用している場合にのみ利用できます。メモリー内 (in memory) タイプジェネレーターでこのオプションを使用しようとすると、解析中に例外が発生します。
ロック属性の場合、insert ステートメントでは、以下のいずれかのオプションが再度提供されます。attribute_list に属性を指定できます。この場合、その値は対応する select 式から取得されます。あるいは、attribute_list から除外できます。その場合は、対応する select 式によって定義される seed value が使用されます。 org.hibernate.type.VersionType 使用されている。

例13.3 INSERT クエリーステートメント

String hqlInsert = "insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...";
int createdEntities = s.createQuery( hqlInsert ).executeUpdate();
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.