AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

機能の互換性

このページでは、 Hibernetes ORM 拡張機能 でサポートされている機能とサポートされていない機能に関する情報を見つけることができます。Hibernate ORM 拡張機能はMongoDBレプリカセットのみをサポートします。サポートされていない機能を使用する場合、 Hibernetes ORM 拡張機能は UnsupportedFeatureException をスローします。

機能のリクエストは、AHAアイデアを作成することで行えます。今後の機能は、ユーザーの要望に基づいて優先順位が決定されます。

このセクションは、Hibernate ORM 拡張機能がさまざまなMongoDB機能をサポートしているかどうかを示します。

Hibernate ORM 拡張機能でサポートされているすべてのBSON typesのリストを確認するには、エンティティの作成ガイドのMongoDB BSON Fieldsセクションを参照してください。

MongoDB の機能
一般提供版(GA)のサポート

一括書込み (write)

✓

削除操作

✓

地理空間クエリ

サポートされていません。ただし、createNativeQuery()メソッドは地理空間クエリをサポートしています。MongoDBクエリ言語ステートメントに$geoWithinまたは$nearパイプラインステージを含めます。ネイティブクエリについて学ぶには、ネイティブデータベースクエリの実行ガイドを参照してください。

挿入操作

✓

MongoDB Searchクエリ

サポートされていません。ただし、createNativeQuery() メソッドは検索クエリをサポートしています。MongoDB クエリ言語ステートメントに、$search パイプラインステージを含めてください。例を表示するには、Perform Native Database Queries ガイドの MongoDB Search クエリを実行する セクションを参照してください。

MongoDB ベクトル検索クエリ

サポートされていません。ただし、createNativeQuery() メソッドはベクトル検索クエリをサポートしています。MongoDB クエリ言語ステートメントに $vectorSearch パイプラインステージを含めます。ネイティブクエリの詳細については、「ネイティブデータベースクエリの実行」ガイドを参照してください。

MQLによるネイティブクエリ

✓

プロジェクション

一部サポート。クエリプロジェクション内での 集計式 はサポートされておらず、プロジェクションにはすべてのエンティティフィールドを含める必要があります。
ターミナル$projectステージで_idが指定されていない場合、Hibernate ORM拡張機能は_idを暗黙的に返すのではなく、結果から除外します。結果をエンティティにバインドするネイティブクエリは、_idを明示的にプロジェクトする必要があります。

読み取り操作

✓

アップデート操作

✓

Upsert 操作

一部サポート。アップサート操作は、StatelessSession API を介してバージョン管理されていないエンティティでサポートされています。@Version で注釈が付けられたフィールドを持つエンティティはサポートされていません。詳細については、「CRUD 操作」ガイドの「ドキュメントのアップサート」セクションを参照してください。

MongoDB の機能
一般提供版(GA)のサポート

変更ストリーム

サポートされていません。ただし、MongoDB Java ドライバーを使用して変更ストリームを使用できます。詳細については、Java ドライバードキュメントの「Open Change Streams」セクションを参照してください。

クライアント側フィールドレベル暗号化(CSFLE)とQueryable Encryption(QE)

サポートされていません。この機能は将来のリリースに向けて検討中です。ただし、MongoDB Java ドライバーを構成するときにCSFLE/QEを設定できます。詳細については、MongoDB ServerマニュアルのCSFLEドキュメントを参照してください。

GridFS

サポートされていません。ただし、MongoDB Java ドライバーを介して GridFS を使用できます。学ぶ詳細については、Java ドライバーのドキュメントのGridFS を使用した大容量ファイルストレージガイドを参照してください。

時系列データ

サポートされていません。ただし、MongoDB Java ドライバーを使用して時系列コレクションを作成することはできます。詳細については、Javaドライバーのドキュメントの時系列コレクションガイドを参照してください。

スタンドアロン mongod インスタンス

サポートされていません。すべてのスタンドアロンインスタンスをレプリカセットに変換する ことをお勧めします。詳細については、MongoDB Serverマニュアルのスタンドアロンの自己管理型mongodをレプリカセットに変換するを参照してください。

ビュー

サポートされていません。ただし、 MongoDB Javaドライバーを使用して MongoClientインスタンスを定義できます。次に、MongoDatabaseインスタンスで createView() メソッドを呼び出して新しいビューを作成します。

MongoDB の機能
一般提供版(GA)のサポート

ロック

一部サポート。楽観的ロックは、@Versionでアノテーションが付けられたフィールドを持つエンティティでサポートされています。Hibernate ORM拡張機能は、各更新および削除するのMQLフィルターに現在のバージョン値を追加し、バージョンが一致しなくなった場合にOptimisticLockExceptionをスローします。詳細については、楽観的ロックによる更新の競合の防止ガイドを参照してください。

悲観的ロック(Pessimistic Locking)はサポートされていません。

トランザクション

✓

MongoDB の機能
一般提供版(GA)のサポート

関連付け

一部サポート。@OneToOne、@OneToMany、@ManyToOne、@ManyToMany、@ElementCollectionのアノテーションがサポートされています。@SecondaryTable と @JoinFormula のアノテーションはサポートされていません。そのため、SessionFactory が開始するとエラーが発生します。

ID の自動生成

一部サポート。ObjectIdの自動生成がサポートされています。ただし、Stringおよびint識別子は手動で設定できます。

@GeneratedValue アノテーションはシーケンススタイルの生成をサポートしており、Hibernate ORM 拡張機能は hibernate_sequences という名前のコレクションを使用してこれをバックアップします。

java.util.UUID 識別子の自動生成は、@UuidGenerator アノテーションまたは @GeneratedValue(strategy = UUID) アノテーションを通じてサポートされます。

IDENTITYおよびTABLE戦略、BigIntegerおよびBigDecimal識別子、および空ではない@SequenceGenerator options要素はサポートされていません。

複合プライマリキー

一部サポート。標準の @Embeddable クラスまたはレコード上で、@EmbeddedId を使用して複合キーを宣言します。Hibernate ORM 拡張機能は、キーを _id サブドキュメントとして保存し、その値を生成することはありません。

@IdClass アノテーション、複数の @Id 属性、@Struct 集合型の埋め込み可能な識別子、非スカラーキーコンポーネント、および @MapsId を介した派生アイデンティティはサポートしません。

詳細については、「エンティティの作成ガイド」の「複合プライマリキー」セクションを参照してください。

継承戦略

一部サポート。単一テーブル継承とマップされたスーパークラスがサポートされています。JOINED 戦略と TABLE_PER_CLASS 戦略はサポートされていません。詳細を学ぶには、「エンティティ継承階層のマッピング」ガイドを参照してください。

@JdbcTypeCode 注釈

サポート対象外 。

遅延取得

サポート対象外 。

順序

✓

@Table.catalog 要素

サポートされていません。Hibernate ORM 拡張機能は、MongoDB がクロスデータベース $lookup 操作をサポートしないため、ブートストラップ時に @Table.catalog 要素と hibernate.default_catalog プロパティを拒否します。その代わりに、各データベースに対して 1 つの SessionFactory インスタンスを作成します。

@Table.schema 要素

✓
単一のMongoDBデータベース内のコレクション名のプレフィックスにマップされます。

検証

✓

MongoDB の機能
一般提供版(GA)のサポート

上限付きコレクション

サポートされていません。ただし、MongoDB Java ドライバーを使用して MongoClient インスタンスを定義することはできます。次に、createCollection()呼び出しのパラメーターとしてCreateCollectionOptions.capped(true)を指定して、上限付きコレクションを作成します。

クラスター化されたコレクション

サポートされていません。ただし、MongoDB Java ドライバーを使用して MongoClient インスタンスを定義することはできます。次に、clusteredIndex というドキュメントを作成し、クラスター化インデックスを定義します。このクラスター化されたインデックスを、クラスター化されたコレクションを定義するMongoDatabase.runCommand()メソッドに渡すドキュメントの一部として使用します。

複合インデックス

✓

埋め込みドキュメントインデックス

サポートされていません。ただし、MongoDB Java ドライバーを使用して MongoClient インスタンスを定義することはできます。次に、ネストされたメソッド MongoCollection.createIndex(Indexes.ascending("field.subfield")) を呼び出します。このメソッドは、ネストされたキーパス「フィールド.subfield」を使用します。埋め込みドキュメントのインデックスを作成します。

地理空間インデックス

サポートされていません。ただし、MongoDB Java ドライバーを介して地理空間インデックスを使用できます。詳細については、Javaドライバーのドキュメントのインデックスガイドの地理空間インデックスセクションを参照してください。

MongoDB Search インデックス

サポートされていません。ただし、MongoDB Java ドライバーを通じて MongoDB Search インデックスを使用できます。詳細を学ぶには、Java ドライバー ドキュメントのインデックスガイドの「MongoDB Search および Vector 検索インデックス」セクションを参照してください。

MongoDB ベクトル検索インデックス

サポートされていません。ただし、MongoDB Java ドライバーを介して MongoDB Vector 検索インデックスを使用することはできます。詳細を学ぶには、Java ドライバー ドキュメントのインデックスガイドの「MongoDB Search および Vector 検索インデックス」セクションを参照してください。

Multikey Indexes

サポートされていません。ただし、MongoDB Java ドライバーを使用してマルチキーインデックスを使用することはできます。詳細については、Javaドライバーのドキュメントのインデックスガイドの「マルチキーインデックス(配列フィールドのインデックス)」セクションを参照してください。

部分インデックス

サポートされていません。ただし、MongoDB Java ドライバーを使用して MongoClient インスタンスを定義することはできます。次に、ネストされたメソッド MongoCollection.createIndex(Indexes.partialFilterExpression()) を呼び出して、部分インデックスを作成します。

スキーマ検証

サポートされていません。ただし、MongoDB Java ドライバーを使用して MongoClient インスタンスを定義することはできます。次に、MongoDatabase.runCommand() メソッドを使用して collMod コマンドを実行し、バリデーターを作成します。

単一フィールド インデックス

✓

Sparse Indexes

サポートされていません。ただし、MongoDB Java ドライバーを使用して MongoClient インスタンスを定義することはできます。次に、MongoCollection.createIndex()メソッドを呼び出す際にパラメータとしてIndexOptions().sparse(true)を指定し、sparse indexを作成します。

Unique Indexes

✓

モデル作成後の埋め込みモデルインデックスの更新

サポートされていません。ただし、埋め込みモデルのインデックスは手動で削除して再作成できます。

インデックスについて学ぶには、「クエリ最適化のためのインデックス」ガイドをご覧ください。

このセクションは、 Hibernet ORM 拡張機能がさまざまな Hibernet ORM 機能 をサポートしているかどうかを示します。

データ型
一般提供版(GA)のサポート

コレクション タイプ(リスト、セット、マップ、配列)

✓
@ElementCollection と CollectionTable はサポートされていません。ただし、埋め込み構造体のコレクションは、@Embeddable および @Struct でアノテーションが付けられた埋め込み可能なクラスを通じてサポートされます。

埋め込み可能エンティティ、スカラー型

一部サポート。java.time.Instant、java.time.Duration、java.time.Year、java.time.ZoneId、java.time.ZoneOffset、およびjava.util.TimeZoneの各型は、トップレベルおよびネストされたエンティティでサポートされています。

埋め込みエンティティ、バイナリ

✓

埋め込みエンティティ、識別子のタイプ

一部サポート。エンティティを永続化する前に、エンティティのIDを手動で設定します。

埋め込みエンティティ、 JSON

✓

埋め込みエンティティ、null セマンティクス

✓

最上位エンティティ、バイナリ

✓

最上位エンティティ、識別子のタイプ

✓
エンティティを永続化する前にUUIDを手動で割り当てるか、@UuidGeneratorアノテーションを使用して自動生成します。

最上位エンティティ、 JSON

✓

最上位エンティティ、null セマンティクス

✓

最上位エンティティ、スカラー型

✓

最上位エンティティ、一時タイプ

一部サポート。java.time.Instant、java.time.Duration、java.time.Year、java.time.ZoneId、java.time.ZoneOffset、およびjava.util.TimeZoneの各型は、トップレベルおよびネストされたエンティティでサポートされています。

三項論理(true、false、または UNKNOWN)

サポートされていません。

Hibernate ORM拡張機能では、com.mongodb.hibernate.semantics.nullsプロパティを設定する必要があり、サポートされている値はMQLのみです。Null比較は、Hibernate ORMの三項論理ではなく、MongoDB クエリ言語のセマンティクスに従います。Hibernate ORM拡張機能は、プロパティが設定されていない場合、スタートアップ時に例外をスローします。

一時停止 ORM 機能
一般提供版(GA)のサポート

HQL および JQL クエリ、集計演算子

✓

HQL および JQL クエリ、算術演算子

部分的にサポート。+、-、*、/、divの演算子、およびSELECTとWHERE句の単項-と+をサポートします。

Hibernate ORMがmod()関数呼び出しに書き換えるHQL %演算子など、オペランドとしての関数呼び出しはサポートされていません。

詳細については、「クエリを指定」ガイドの「計算式を使用」セクションを参照してください。

HQL および JQL クエリ、配列演算子

✓

HQL および JPQL クエリ、日時関数

一部サポート。SELECT 句の datetime フィールドで extract() 関数と format() 関数をサポートし、それらを MongoDB の日付演算子と $dateToString 演算子に変換します。各関数は、特定の datetime フィールドとパスワードなしコードをサポートしています。詳細を学ぶには、クエリでの datetime 関数の使用ガイドをご覧ください。

HQLおよびJPQLクエリ、string関数

一部サポート。SELECT句のstringフィールドでlength()、upper()、lower()、concat()、substring()、locate()、replace()、trim()、pad()、repeat()の各関数と||演算子をサポートし、それらをMongoDBのstring演算子に変換します。position()、overlay()、left()、right()、またはcollate()関数はサポートされていません。詳細および例については、「クエリでのstring関数の使用」ガイドを参照してください。

HQLおよびJPQLクエリ、CASE式

部分的にサポートされています。

  • CASESELECT`CASE`式は、`SELECT`句での単純な式および検索式、`WHERE`句での比較のオペランド、および一括更新ステートメントの`SET`句でサポートされています。WHERESETこれらをMongoDBの`$switch`演算子に変換します。$switch

  • 同じCASE式がGROUP BYキーである場合を除き、ORDER BY句でのCASE式はサポートされていません。さらに、LIKE述語の照合式として、INまたはIS NULL述語のテスト式として、またはWHERE句の述語としてCASE式はサポートされていません。

詳細および例については、「Specify a クエリ」ガイドの「ユースケース式 for Conditional Logic」セクションを参照してください。

HQL および JQL クエリ、比較演算子

  • >, >=、<、<=、=、<>: サポート対象(計算されたオペランドを含む)。詳細については、「クエリの指定」ガイドの「計算された式の使用」セクションを参照してください。

  • EXISTS: 部分対応.単一フィールドの埋め込み配列の要素をフィルターし、MongoDB $elemMatch 演算子に変換する EXISTS サブクエリをサポートします。一部の EXISTS サブクエリはサポートしていません。詳しく学ぶには、「クエリの指定」ガイドの EXISTS セクションを参照してください。

  • BETWEEN: サポートあり。MongoDBの$gteおよび$lte演算子に変換されます。学ぶについては、「クエリの指定」ガイドのBETWEENセクションを参照してください。

  • IS NULL および IS NOT NULL: サポートされています。明示的に null の値と欠落しているフィールド、またはそれらの値の否定に一致し、MongoDB の $match 演算子に変換されます。詳細を学ぶには、「Specify a Query」ガイドの「IS NULL」および「IS NOT NULL」セクションを参照してください。

  • IN および NOT IN: 部分的にサポート。フィールドパスに対してテストされるリテラルまたはパラメータのリストをサポートし、MongoDBの$inおよび$nin演算子に変換されます。リストとしてサブクエリや配列値の式はサポートされていません。詳細については、「Specify a クエリ」ガイドの「IN」および「NOT IN」セクションを参照してください。

  • null との比較: サポートされています。Hibernate ORM の三値論理ではなく MongoDB クエリ言語の null セマンティクスを適用するため、null との比較は明示的に null の値と欠落しているフィールドに一致します。詳細を学ぶには、「クエリの指定」ガイドの「フィールド値と Null の比較」セクションを参照してください。

  • 行値述語: 部分的にサポートされています。where (title, year) = (:t, :y) のような括弧で囲まれたフィールドのリストに対して =、<>、IN、および NOT IN 演算子をサポートし、各述語をコンポーネントごとの MongoDB $eq 比較に変換します。>、>=、<、または <= 演算子を使用する行値述語はサポートされていません。詳細については、「クエリの指定」ガイドの「複数のフィールドを一度に比較する」セクションを参照してください。

  • LIKE: サポートあり。MongoDBの$regex演算子に変換されます。

  • ANY, ALL: サポートされていません。createNativeQuery() メソッドを使用して、MongoDB クエリ言語ステートメントで比較演算子を渡すことができます。ネイティブクエリについて学ぶには、ネイティブデータベースクエリの実行ガイドを参照してください。

HQL および JQL クエリ、要素演算子

✓

HQL および JQL クエリ、評価演算子

一部サポート。LIKE、NOT LIKE、ILIKE、およびNOT ILIKEの述語を正規表現フィルターに変換することで、MongoDB $regex評価演算子をサポートします。詳細および例については、「クエリの指定」ガイドのLIKEセクションを参照してください。

HQLおよびJPQLクエリ、グループ化

一部サポート。GROUP BY 句と HAVING 句をサポートしており、これらは MongoDB の $group ステージと $match ステージに変換されます。グループ化キーには、フィールド参照または計算された式を使用できます。詳細および例については、「Modify クエリ Results」ガイドの「Group Results」セクションを参照してください。

  • フィールド参照キー: サポート対象(@Struct 集計埋め込み可能オブジェクトおよび結合されたエンティティのフィールドを含む)。

  • @Struct 集計埋め込み可能に対する集計関数: サポートされていません。count(a.intField)のように埋め込み可能なフィールドに集計関数を適用することはできますが、count(a)のように埋め込み可能なもの自体に適用することはできません。

  • 計算された式キー: サポートされています。SELECT 句または HAVING 句の式は、両方を同じように書き込み (write) た場合にのみ、グループ化キーとして解決されます。

  • 余分な列: サポートされていません。SELECT、HAVING、またはORDER BY句のすべての列は、グループ化キーであるか、グループ化キーに含まれている必要があります。

  • ORDER BY グループ化キー全体: フィールド参照キーと計算された式キーの両方でサポートされています。

  • SELECT DISTINCT: サポート対象外(GROUP BYの有無を問わず)。

  • DISTINCT 集計関数内: サポートされています。さらに学び、例を見るには、Specify a クエリ ガイドの「個別の値の要約」セクションをご覧ください。

HQLおよびJPQLクエリ、結合

一部サポート。from Movie m join m.comments cのようにマッピングされた関連付けをナビゲートするか、from Movie m join Comment c on c.date > m.releasedのようにエンティティに名前を付けてON句を指定することで、エンティティを結合できます。各結合は、MongoDBの$lookupおよび$unwindステージに変換されます。例については、コレクション間でのエンティティの結合ガイドを参照してください。

  • 内部結合および左外部結合:サポートされています。

  • JOIN FETCH 句:サポートされています。

  • チェーン結合: サポートされています。3つ以上のエンティティを結合できます。

  • 複合キーの結合: 部分的にサポート。ターゲットエンティティが @EmbeddedId 複合キーを持つ @ManyToOne または @OneToOne アソシエーションを結合できます。ON 条件で = を使用して、複合識別子全体を比較することもできます。

    このようなアソシエーションでの @JoinColumn アノテーション、識別子全体の順序比較、および複合キーを含む @ManyToMany アソシエーションはサポートされていません。

    詳細については、「コレクション間でのエンティティの結合」ガイドの「複合キーの結合」セクションを学ぶしてください。

  • ON 条件: 部分的にサポート。ON 条件は、WHERE 句と同じ比較演算子、論理演算子、および述語演算子をサポートします。これには、複数のフィールド比較を AND または OR で組み合わせた複合条件や、範囲条件や不等価条件が含まれます。ON 条件は列を比較する必要があります。on m = c.movie のようにエンティティ参照を比較したり、on c.movie.title = 'Blue Jasmine' のように条件内で関連付けをナビゲートしたりすることはできません。

  • 右外部結合、完全外部結合、クロス結合、横結合、サブクエリ結合:サポートされていません。createNativeQuery()メソッドを使用して、複数のコレクションをクエリする集計操作を実行できます。ネイティブクエリの詳細については、「ネイティブデータベースクエリの実行」ガイドを参照してください。

HQL および JQL クエリ、論理演算子

✓

HQLおよびJPQLクエリ、string関数

一部サポート。character_length()、length()、substring()、trim()、upper()、lower()、pad()、lpad()、rpad()、concat()、locate()、repeat()の各関数と、||連結演算子をサポートしています。その他のHibernate ORM string関数はサポートされていません。

一時停止 ORM 機能
一般提供版(GA)のサポート

1次レベル キャッシュ

✓

2レベル キャッシュ

✓

このセクションは、 Hibernetes ORM 拡張機能がさまざまな外部フレームワークまたはライブラリをサポートしているかどうかを示します。

フレームワークまたはライブラリ
一般提供版(GA)のサポート

Spring BootおよびSpring Data JPA

一部サポート。Hibernate ORM 拡張機能は、MongoDB をバックエンドとする JPA リポジトリおよび Spring Data JPA リポジトリを構成する Spring Boot starter を提供します。当社では、すべての Spring Boot または Spring Data 機能に対するサポートを保証しておりません。詳細を学ぶには、Spring Boot and Spring Data JPA 統合 セクションを参照してください。