Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Compatibilidad de características

En esta página, puede encontrar información sobre las funcionalidades compatibles y no compatibles en la extensión Hibernate ORM. La extensión Hibernate ORM sólo admite sets de réplicas de MongoDB. Cuando utilizas una funcionalidad no admitida, la extensión Hibernate ORM lanza un UnsupportedFeatureException.

Puedes solicitar soporte para una función creando una idea en AHA. Priorizamos las próximas funciones según la demanda de los usuarios.

Esta sección indica si la extensión Hibernate ORM es compatible con diversas funcionalidades de MongoDB.

Para ver una lista de todos los tipos BSON admitidos en la extensión Hibernate ORM, consulta la sección Campos BSON de MongoDB en la guía Crear entidades.

Funcionalidad de MongoDB
Soporte para GA (Disponibilidad General)

Guardados masivos

✓

Operaciones de borrar

✓

Query geoespacial

No compatible. Sin embargo, el método createNativeQuery() admite consultas geoespaciales. Incluya la etapa de canalización $geoWithin o $near en su instrucción del lenguaje de consulta de MongoDB. Para obtener más información sobre las consultas nativas, consulte la guía «Realizar consultas nativas de base de datos».

Operaciones de inserción

✓

Consultas de búsqueda de MongoDB

No compatible. Sin embargo, el método createNativeQuery() admite consultas de búsqueda. Incluya la etapa de canalización $search en su instrucción del lenguaje de consulta de MongoDB. Para ver un ejemplo, consulte la sección «Ejecutar una consulta de búsqueda de MongoDB» en la guía «Realizar consultas nativas de la base de datos».

Los query de MongoDB Vector Search

No compatible. Sin embargo, el método createNativeQuery() admite consultas de búsqueda vectorial. Incluya la etapa de canalización $vectorSearch en su instrucción de lenguaje de consulta de MongoDB. Para obtener más información sobre las consultas nativas, consulte la guía "Realizar consultas nativas de base de datos".

Consultas nativas con MQL

✓

Proyecciones

Soporte parcial. Lasexpresiones de agregación dentro de las proyecciones de consulta no son compatibles, y debe incluir todos los campos de entidad en su proyección.
Cuando la etapa terminal $project no especifica _id, la extensión Hibernate ORM excluye _id de los resultados en lugar de devolverlo implícitamente. Una consulta nativa que vincula sus resultados a una entidad debe proyectar _id explícitamente.

Operaciones de lectura

✓

Operaciones de actualizar

✓

Operaciones de actualización e inserción

Soporte parcial. Las operaciones de inserción/actualización son compatibles con entidades sin versión a través de la API StatelessSession. No son compatibles con entidades que tengan un campo anotado con @Version. Para obtener más información, consulte la sección «Documentos de inserción/actualización» en la guía «Realizar operaciones CRUD».

Funcionalidad de MongoDB
Soporte para GA (Disponibilidad General)

Flujos de cambio

No compatible. Sin embargo, puede usar un flujo de cambios a través del controlador Java de MongoDB. Para obtener más información, consulte la sección "Abrir flujos de cambios" en la documentación del controlador Java.

Cifrado a nivel de campo del lado del cliente (CSFLE) y Queryable Encryption (QE)

No compatible. Estamos considerando incluir esta función en una futura versión. Sin embargo, puede configurar CSFLE/QE al configurar el controlador Java de MongoDB. Para obtener más información, consulte la documentación de CSFLE en el manual del servidor de MongoDB.

GridFS

No es compatible. Sin embargo, puede usar GridFS a través del controlador Java de MongoDB. Para obtener más información, consulte la guía «Almacenamiento de archivos grandes con GridFS» en la documentación del controlador Java.

Datos de Time Series

No es compatible. Sin embargo, puede crear una colección de series temporales mediante el controlador Java de MongoDB. Para obtener más información, consulte la guía de colecciones de series temporales en la documentación del controlador Java.

Instancias independientes mongod

No compatible. Recomendamos que conviertas cualquier instancia autónoma en un set de réplicas. Para obtener más información, consulte Convertir un mongod autónomo autogestionado en un set de réplicas en el manual del servidor de MongoDB.

Vistas

No compatible. Sin embargo, se puede utilizar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, llame al método createView() en su instancia MongoDatabase para crear una nueva vista.

Funcionalidad de MongoDB
Soporte para GA (Disponibilidad General)

Bloqueo

Soporte parcial. El bloqueo optimista es compatible con entidades que tienen un campo anotado con @Version. La extensión Hibernate ORM agrega el valor de la versión actual al filtro MQL para cada actualización y eliminación, y lanza una excepción OptimisticLockException cuando la versión ya no coincide. Para obtener más información, consulte la guía «Evitar actualizaciones conflictivas con bloqueo optimista».

No admite el bloqueo pesimista.

Transacciones

✓

Funcionalidad de MongoDB
Soporte para GA (Disponibilidad General)

Asociaciones

Soporte parcial. Se admiten las anotaciones @OneToOne, @OneToMany, @ManyToOne, @ManyToMany y @ElementCollection. Las anotaciones @SecondaryTable y @JoinFormula no son compatibles y provocan un error al iniciarse SessionFactory.

Autogeneración de IDs

Soporte parcial. Se admite la generación automática de ObjectIds. Sin embargo, puede establecer manualmente los identificadores String y int.

La anotación @GeneratedValue admite la generación de estilo secuencial, que la extensión Hibernate ORM respalda con una colección de contadores llamada hibernate_sequences. La generación

automática de identificadores java.util.UUID es compatible a través de la anotación @UuidGenerator o la anotación @GeneratedValue(strategy = UUID).

No admite las estrategias IDENTITY y TABLE, los identificadores BigInteger y BigDecimal, ni un elemento @SequenceGenerator options no vacío.

Claves primarias compuestas

Soporte parcial. Declare una clave compuesta con @EmbeddedId en una clase o registro estándar @Embeddable. La extensión Hibernate ORM almacena la clave como un subdocumento _id y nunca genera su valor.

No admite la anotación @IdClass, múltiples atributos @Id, un identificador incrustable agregado @Struct, un componente de clave no escalar ni la identidad derivada mediante @MapsId.

Para obtener más información, consulte la sección Claves primarias compuestas en la guía Crear entidades.

Estrategia de herencia

Soporte parcial. Se admite la herencia de tabla única y las superclases mapeadas. No admite las estrategias JOINED y TABLE_PER_CLASS. Para obtener más información, consulte la guía Mapear una jerarquía de herencia de entidades.

@JdbcTypeCode Anotación

No admitido.

Recuperación perezosa/anticipada

No admitido.

Ordenando

✓

@Table.catalog Elemento

No compatible. La extensión Hibernate ORM rechaza el elemento @Table.catalog y la propiedad hibernate.default_catalog al iniciar la aplicación porque MongoDB no admite operaciones $lookup entre bases de datos. En su lugar, cree una instancia SessionFactory para cada base de datos.

@Table.schema Elemento

✓
Se asigna a un prefijo de nombre de colección dentro de una única base de datos MongoDB.

Validación

✓

Funcionalidad de MongoDB
Soporte para GA (Disponibilidad General)

Colecciones con tamaño fijo

No compatible. Sin embargo, puede usar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, cree una colección limitada especificando CreateCollectionOptions.capped(true) como parámetro en su llamada a createCollection().

Colecciones con índice clusterizado

No compatible. Sin embargo, puede usar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, cree un documento llamado clusteredIndex y defina su índice agrupado. Use este índice agrupado como parte del documento que pasa al método MongoDatabase.runCommand(), que define la colección agrupada.

Índices compuestos

✓

Índices de documentos incrustados

No compatible. Sin embargo, puede usar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, llame al método anidado MongoCollection.createIndex(Indexes.ascending("field.subfield")). Este método utiliza rutas de clave anidadas "campo.subcampo" para crear un índice de documento incrustado.

Índices geoespaciales

No es compatible. Sin embargo, puede usar índices geoespaciales a través del controlador Java de MongoDB. Para obtener más información, consulte la sección «Índices geoespaciales» de la guía de índices en la documentación del controlador Java.

Índices de búsqueda de MongoDB

No es compatible. Sin embargo, puede usar los índices de búsqueda de MongoDB a través del controlador Java de MongoDB. Para obtener más información, consulte la sección «Índices de búsqueda de MongoDB y de búsqueda vectorial» de la guía de índices en la documentación del controlador Java.

Índices de MongoDB Vector Search

No es compatible. Sin embargo, puede usar los índices de MongoDB Vector Search a través del controlador Java de MongoDB. Para obtener más información, consulte la sección «Índices de MongoDB Search y Vector Search» de la guía de índices en la documentación del controlador Java.

Multikey Indexes

No es compatible. Sin embargo, puede usar índices de clave múltiple a través del controlador Java de MongoDB. Para obtener más información, consulte la sección «Índices de clave múltiple (Índices en campos de matriz)» de la guía de índices en la documentación del controlador Java.

Índices parciales

No compatible. Sin embargo, puede usar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, llame al método anidado MongoCollection.createIndex(Indexes.partialFilterExpression()) para crear un índice parcial.

Validación de esquema

No compatible. Sin embargo, puede usar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, cree un validador ejecutando el comando collMod a través del método MongoDatabase.runCommand().

Índices de un solo campo

✓

Sparse Indexes

No compatible. Sin embargo, puede usar el controlador Java de MongoDB para definir una instancia MongoClient. Luego, especifique IndexOptions().sparse(true) como parámetro en su llamada al método MongoCollection.createIndex() para crear un índice disperso.

Unique Indexes

✓

Actualización de los índices de modelos integrados después de la creación del modelo.

No compatible. Sin embargo, puede eliminar y volver a crear el índice del modelo incrustado manualmente.

Para obtener más información sobre los índices, consulte la guía Índices para la optimización de consultas.

Esta sección indica si la extensión de Hibernate ORM admite diversas funcionalidades de Hibernate ORM.

Tipo de dato
Soporte para GA (Disponibilidad General)

Tipos de colecciones (listas, conjuntos, mapas, arreglos)

✓
@ElementCollection y CollectionTable no son compatibles. Sin embargo, las colecciones de estructuras incrustadas son compatibles mediante clases incrustables anotadas con @Embeddable y @Struct.

Entidades integrables, Tipos escalares

Soporte parcial. Los tipos java.time.Instant, java.time.Duration, java.time.Year, java.time.ZoneId, java.time.ZoneOffset y java.util.TimeZone son compatibles con entidades de nivel superior y anidadas.

Entidades integradas, binario

✓

Entidades integradas, tipos de identificadores

Soporte parcial. Establezca manualmente el ID de una entidad antes de guardarla.

Entidades embebidas, JSON

✓

Entidades embebidas, semántica nula

✓

Entidades de nivel superior, Binario

✓

Entidades de nivel superior, Tipos de identificadores

✓
Asigne manualmente los UUID antes de persistir una entidad, o genérelos automáticamente utilizando la anotación @UuidGenerator.

Entidades de primer nivel, JSON

✓

Entidades de nivel superior, Semántica Nula

✓

Entidades de nivel superior, Tipos escalares

✓

Entidades de nivel superior, tipologías temporales

Soporte parcial. Los tipos java.time.Instant, java.time.Duration, java.time.Year, java.time.ZoneId, java.time.ZoneOffset y java.util.TimeZone son compatibles con entidades de nivel superior y anidadas.

Lógica ternaria (Verdadero, Falso o DESCONOCIDO)

No compatible.

La extensión Hibernate ORM requiere que configure la propiedad com.mongodb.hibernate.semantics.nulls, y MQL es el único valor admitido. Las comparaciones de valores nulos siguen la semántica del lenguaje de consulta de MongoDB, no la lógica ternaria de Hibernate ORM. La extensión Hibernate ORM genera una excepción al iniciarse si la propiedad no está configurada.

Funcionalidad de Hibernate ORM
Soporte para GA (Disponibilidad General)

HQL y JPQL Queries, Operadores agregados

✓

Consultas HQL y JPQL, operadores aritméticos

Soporte parcial. Admite los operadores +, -, *, /, div y los operadores unarios - y + en las cláusulas SELECT y WHERE.

No admite llamadas a funciones como operandos, incluido el operador % de HQL, que Hibernate ORM reescribe como una llamada a función mod().

Para obtener más información, consulte la sección "Usar expresiones calculadas" en la guía "Especificar una consulta".

HQL y JPQL queries, operadores de arreglos

✓

Consultas HQL y JPQL, funciones de fecha y hora

Soporte parcial. Admite las funciones extract() y format() en un campo de fecha y hora dentro de una cláusula SELECT, traduciéndolas a operadores de fecha de MongoDB y al operador $dateToString. Cada función admite un conjunto específico de campos de fecha y hora y códigos de patrón. Para obtener más información, consulte la guía «Usar funciones de fecha y hora en consultas».

Consultas HQL y JPQL, funciones de cadena

Soporte parcial. Admite las funciones length(), upper(), lower(), concat(), substring(), locate(), replace(), trim(), pad() y repeat(), así como el operador || en un campo de cadena dentro de una cláusula SELECT, traduciéndolos a operadores de cadena de MongoDB. No admite las funciones position(), overlay(), left(), right() ni collate(). Para obtener más información y ver ejemplos, consulte la guía «Usar funciones de cadena en consultas».

Consultas HQL y JPQL, expresiones CASE

Parcialmente financiado.

  • Admite expresiones CASE simples y con búsqueda en una cláusula SELECT, como operando de una comparación en una cláusula WHERE y en la cláusula SET de una instrucción de actualización masiva. Las traduce al operador $switch de MongoDB.

  • No admite expresiones CASE en una cláusula ORDER BY, a menos que la misma expresión CASE sea una clave GROUP BY. Además, no admite expresiones CASE como expresión de coincidencia de un predicado LIKE, como expresión de prueba de un predicado IN o IS NULL, ni como predicado de una cláusula WHERE.

Para obtener más información y ver un ejemplo, consulte la sección Expresiones de casos de uso para lógica condicional en la guía Especificar una consulta.

Consultas HQL y JPQL, Operadores de comparación

  • >, >=, <, <=, =, <>: Admite, incluso con operandos calculados. Para obtener más información, consulte la sección «Usar expresiones calculadas» en la guía «Especificar una consulta».

  • EXISTS: Soporte parcial. Admite una subconsulta EXISTS que filtra elementos de la matriz incrustada de un solo campo, traduciéndola al operador $elemMatch de MongoDB. No admite ciertas subconsultas EXISTS. Para obtener más información, consulte la sección EXISTS en la guía Especificar una consulta.

  • BETWEEN: Compatible. Se traduce a los operadores $gte y$lte de MongoDB. Para obtener más información, consulte la sección BETWEEN en la guía Especificar una consulta.

  • IS NULL y IS NOT NULL: Compatible. Coincide explícitamente con valores nulos y campos faltantes o la negación de dichosvalores, lo que se traduce al operador $match de MongoDB. Para obtener más información, consulte las secciones IS NULL e IS NOT NULL en la guía Especificar una consulta.

  • IN y NOT IN: Soporte parcial. Admite una lista de literales o parámetros que se prueban con una ruta de campo, lo que se traduce a los operadores $in y $nin de MongoDB. No admite subconsultas ni expresiones con valores de matriz como lista. Para obtener más información, consulte las secciones IN y NOT IN en la guía Especificar una consulta.

  • Comparaciones con null: Compatible. Aplica la semántica de valores nulos del lenguaje de consulta de MongoDB en lugar de la lógica ternaria del ORM deHibernate, por lo que una comparación con null coincide explícitamente con valores nulos y campos faltantes. Para obtener más información, consulte la sección «Comparar valores de campo con valores nulos» en la guía «Especificar una consulta».

  • Predicados de valor de fila: Compatibilidad parcial. Admite los operadores =, <>, IN y NOT IN sobre una lista de campos entre paréntesis, como where (title, year) = (:t, :y), traduciendo cada predicado a comparaciones $eq de MongoDB por componente. No admite predicados de valor de fila que utilicen los operadores >, >=, < o <=. Para obtener más información, consulte la sección «Comparar varios campos a la vez» en la guía «Especificar una consulta».

  • LIKE: Compatible. Se traduce al operador $regex deMongoDB.

  • ANYALL: No compatible. Puede usar el método createNativeQuery() y pasar operadores de comparación en su instrucción de lenguaje de consulta de MongoDB. Para obtener más información sobre las consultas nativas, consulte la guía "Realizar consultas nativas de base de datos".

Queries HQL y JPQL, operadores de elementos

✓

Consultas HQL y JPQL, Operadores de evaluación

Soporte parcial. Admite el operador de evaluación $regex de MongoDB mediante la traducción de los predicados LIKE, NOT LIKE, ILIKE y NOT ILIKE a filtros de expresiones regulares. Para obtener más información y ver ejemplos, consulte la sección LIKE en la guía Especificar una consulta.

Consultas HQL y JPQL, Agrupación

Soporte parcial. Admite las cláusulas GROUP BY y HAVING, que se traducen a las etapas $group y $match de MongoDB. Una clave de agrupación puede ser una referencia de campo o una expresión calculada. Para obtener más información y ver ejemplos, consulte la sección Resultados de agrupación en la guía Modificar resultados de consulta.

  • Clavesde referencia de campo: Admitidas, incluidos los campos de los elementos incrustables agregados @Struct y las entidades unidas.

  • Funciones de agregación sobre un elemento incrustable @Struct: No compatible. Puede aplicar una función de agregación a un campo de un elemento incrustable, como en count(a.intField), pero no al elemento incrustable en sí, como en count(a).

  • Claves de expresiones calculadas: compatibles. Una expresión en la cláusula SELECT o HAVING se resuelve en una clave de agrupación solo cuando se escriben ambas de formaidéntica.

  • Columnas sueltas: No admitidas. Cada columna en la cláusula SELECT, HAVING o ORDER BY debe ser una clave de agrupación o estar contenida en una.

  • ORDER BY Sobre una clave de agrupación: Compatible, tanto para claves de referencia de campo como para claves de expresióncalculada.

  • SELECT DISTINCT con GROUP BY: No compatible.

Consultas y uniones HQL y JPQL

Soporte parcial. Puede unir entidades navegando por una asociación mapeada, como en from Movie m join m.comments c, o nombrando una entidad y proporcionando una cláusula ON, como en from Movie m join Comment c on c.date > m.released. Cada unión se traduce en una etapa $lookup y $unwind de MongoDB. Para ver ejemplos, consulte la guía «Unir entidades entre colecciones».

  • Uniones internas y externas izquierdas: Compatibles.

  • JOIN FETCH cláusulas: Admitidas.

  • Uniones encadenadas: Compatibles. Puede realizar uniones entre más de dosentidades.

  • Uniones de clave compuesta: Compatibilidad parcial. Puede unir una asociación @ManyToOne o @OneToOne cuya entidad de destino tenga una clave compuesta @EmbeddedId. También puede comparar identificadores compuestos completos con = en una condición ON.

    No admite la anotación @JoinColumn en dicha asociación, comparaciones de orden entre identificadores completos ni asociaciones @ManyToMany que involucren una clave compuesta.

    Para obtener más información, consulte la sección Uniones de clave compuesta en la guía Unir entidades entre colecciones.

  • ON Condiciones: Soporte parcial. Una condición ON admite los mismos operadores de comparación, lógicos y de predicado que una cláusula WHERE. Esto incluye condiciones compuestas que combinan comparaciones de múltiples campos con AND o OR, así como condiciones de rango y desigualdad. Una condición ON debe comparar columnas. No se pueden comparar referencias de entidades, como en on m = c.movie, ni navegar por una asociación dentro de la condición, como en on c.movie.title = 'Blue Jasmine'.

  • Uniones externas derechas, externas completas, cruzadas, laterales y de subconsulta: No compatibles. Puede usar el método createNativeQuery() para ejecutar una operación de agregación que consulte varias colecciones. Para obtener más información sobre las consultas nativas, consulte la guía «Realizar consultas nativas de base de datos».

Consultas HQL y JPQL, Operadores lógicos

✓

Consultas HQL y JPQL, funciones de cadena

Soporte parcial. Admite las funciones character_length(), length(), substring(), trim(), upper(), lower(), pad(), lpad(), rpad(), concat(), locate() y repeat(), así como el operador de concatenación ||. Otras funciones de cadena de Hibernate ORM no son compatibles.

Funcionalidad de Hibernate ORM
Soporte para GA (Disponibilidad General)

Caché de primer nivel

✓

Caché de Segundo Nivel

✓

Esta sección indica si la extensión de Hibernate ORM admite diversos frameworks o librerías externas.

Marco o librería
Soporte para GA (Disponibilidad General)

Spring Boot y Spring Data JPA

Soporte parcial. La extensión Hibernate ORM proporciona un iniciador de Spring Boot que configura repositorios JPA basados ​​en MongoDB y Spring Data JPA. No garantizamos la compatibilidad con todas las funciones de Spring Boot o Spring Data. Para obtener más información, consulte la sección Integración de Spring Boot y Spring Data JPA.