Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Compatibilidade de recursos

Nesta página, você pode encontrar informações sobre os recursos compatíveis e não suportados na extensão Hibername ORM. A extensão Hibernate ORM tem suporte apenas a conjuntos de réplicas MongoDB. Quando você usa um recurso não suportado, a extensão ORM do Hibername lança um UnsupportedFeatureException.

Você pode fazer uma solicitação de suporte para um recurso criando uma ideia no AHA. Priorizamos os próximos recursos com base na demanda do usuário.

Esta seção indica se a extensão Hibernar ORM é compatível com várias funcionalidades do MongoDB .

Para ver uma lista de todos os BSON types suportados na extensão Hibernate ORM, consulte a seção MongoDB BSON Fields no guia Criar Entidades.

Funcionalidade do MongoDB
Suporte de disponibilidade geral (GA)

Gravações em massa

✓

Excluir operações

✓

Consultas geoespaciais

Não suportado. No entanto, o método createNativeQuery() oferece suporte a queries geoespaciais. Inclua o estágio de pipeline $geoWithin ou $near em sua declaração de linguagem de query do MongoDB. Para aprender mais sobre query nativo, consulte o guia Executar Query de Banco de Dados Nativo.

Inserir operações

✓

Query de pesquisa do MongoDB Search

Não suportado. No entanto, o método createNativeQuery() suporta query de pesquisa. Inclua o estágio de pipeline $search na sua declaração de linguagem de query do MongoDB. Para ver um exemplo, consulte a seção Executar uma query de pesquisa do MongoDB no guia Executar query nativa do banco de dados.

Queries do MongoDB Vector Search

Não suportado. No entanto, o método createNativeQuery() oferece suporte a query de pesquisa de Vector Search. Inclua o estágio de pipeline $vectorSearch em sua declaração de linguagem de query do MongoDB. Para aprender mais sobre query nativo, consulte o guia Executar Query de Banco de Dados Nativo.

Query nativa com MQL

✓

Projeções

Parcialmente compatível. Expressões de agregação dentro de projeções de query não são suportadas, e você deve incluir todos os campos da entidade em sua projeção.
Quando o estágio terminal $project não especifica _id, a extensão Hibernate ORM exclui _id dos resultados em vez de retorná-lo implicitamente. Uma query nativa que vincula seus resultados a uma entidade deve projeto _id explicitamente.

Ler operações

✓

Atualizar operações

✓

Operações upsert

Parcialmente compatível. As operações de upsert são suportadas em entidades sem versão por meio da API StatelessSession. Não oferece suporte a entidades que tenham um campo anotado com @Version. Para aprender mais, consulte a seção upsert de documentos no guia de Operações CRUD.

Funcionalidade do MongoDB
Suporte de disponibilidade geral (GA)

Fluxos de alterações

Não suportado. No entanto, você pode usar um fluxo de alterações por meio do driver Java do MongoDB. Para aprender mais, consulte a seção Open Change Streams na documentação do driver Java.

Criptografia no nível do campo do lado do cliente (CSFLE) e Queryable Encryption (QE)

Não suportado. Estamos considerando esse recurso para uma versão futura. No entanto, você pode configurar o CSFLE/QE ao configurar o driver Java do MongoDB. Para aprender mais, consulte a documentação do CSFLE no manual do MongoDB Server .

GridFS

Não suportado. No entanto, você pode usar o GridFS por meio do driver Java do MongoDB. Para saber mais, consulte o guia Armazenamento de arquivos grandes com GridFS na documentação do driver Java.

Dados de Time Series

Não suportado. No entanto, você pode criar uma coleção de séries temporais por meio do driver Java do MongoDB. Para saber mais, consulte o guia Coleção de séries temporais na documentação do driver Java.

Instâncias mongod autônomas

Não compatível. Recomendamos que você converta quaisquer instâncias autônomo em um conjunto de réplicas. Para saber mais, consulte Converter um mongod autônomo autogerenciado em um conjunto de réplicas no manual do MongoDB Server.

Visualizações

Não compatível. No entanto, você pode usar o driver Java do MongoDB para definir uma instância MongoClient. Em seguida, chame o método createView() na sua instância do MongoDatabase para criar uma nova visualização.

Funcionalidade do MongoDB
Suporte de disponibilidade geral (GA)

Bloqueio

Parcialmente compatível. O bloqueio otimista é suportado em entidades que possuem um campo anotado com @Version. A extensão Hibernate ORM adiciona o valor da versão atual ao filtro MQL para cada atualizar e excluir, e gera um OptimisticLockException quando a versão não corresponde mais. Para aprender mais, consulte o guia Evitar atualizações conflitantes com bloqueio otimista.

Não suporta bloqueio pessimista.

Transações

✓

Funcionalidade do MongoDB
Suporte de disponibilidade geral (GA)

Associações

Parcialmente compatível. As anotações @OneToOne, @OneToMany, @ManyToOne, @ManyToMany e @ElementCollection são suportadas. As anotações @SecondaryTable e @JoinFormula não são suportadas e causam um erro quando o SessionFactory é iniciado.

IDs de geração automática

Parcialmente compatível. A autogeração de ObjectIds é suportada. No entanto, você pode definir manualmente os identificadores String e int.

A anotação @GeneratedValue oferece suporte à geração no estilo de sequência, que a extensão Hibernate ORM suporta com uma coleção de contadores chamada hibernate_sequences.

A autogeração de identificadores java.util.UUID é suportada por meio da anotação @UuidGenerator ou da anotação @GeneratedValue(strategy = UUID).

Não oferece suporte às estratégias IDENTITY e TABLE, aos identificadores BigInteger e BigDecimal e a um elemento @SequenceGenerator options que não esteja em branco.

Chaves primárias compostas

Parcialmente compatível. Declarar uma chave composta com @EmbeddedId em uma classe ou registro @Embeddable padrão. A extensão Hibernate ORM armazena a chave como um subdocumento _id e nunca gera seu valor.

Não oferece suporte à anotação @IdClass, a vários atributos @Id, a um identificador incorporável agregado @Struct, a um componente de chave não escalar e à identidade derivada por meio de @MapsId.

Para saber mais, consulte a seção Chaves primárias compostas no guia Criar entidades.

Estratégia de herança

Parcialmente compatível. Herança de tabela única e superclasses mapeadas são suportadas. Não oferece suporte às estratégias JOINED e TABLE_PER_CLASS. Para aprender mais, consulte o guia Mapear uma hierarquia de herança de entidade.

@JdbcTypeCode Anotação

Não compatível.

Busca preguiçosa/ansiosa

Não compatível.

Encomenda

✓

@Table.catalog Elemento

Não suportado. A extensão Hibernate ORM rejeita o elemento @Table.catalog e a propriedade hibernate.default_catalog na inicialização porque o MongoDB não oferece suporte a operações $lookup entre bancos de dados. Crie uma instância SessionFactory para cada banco de dados em vez disso.

@Table.schema Elemento

✓
Mapeia para um prefixo de nome de coleção dentro de um único banco de dados MongoDB.

Validação

✓

Funcionalidade do MongoDB
Suporte de disponibilidade geral (GA)

Capped collections

Não suportado. No entanto, você pode usar o driver Java do MongoDB para definir uma instância de MongoClient. Em seguida, crie uma coleção limitada especificando CreateCollectionOptions.capped(true) como um parâmetro em sua chamar createCollection().

Clustered Collections

Não suportado. No entanto, você pode usar o driver Java do MongoDB para definir uma instância de MongoClient. Em seguida, crie um documento chamado clusteredIndex e defina seu índice clusterizado. Use este índice clusterizado como parte do documento que você passa para o método MongoDatabase.runCommand(), que define a coleção clusterizada.

Índices compostos

✓

Índices de documentos incorporados

Não suportado. No entanto, você pode usar o driver Java do MongoDB para definir uma instância de MongoClient. Em seguida, chame o método aninhado MongoCollection.createIndex(Indexes.ascending("field.subfield")). Este método usa caminhos de chave aninhados "campo.subfield" para criar um índice de documento incorporado.

Índices geoespaciais

Não suportado. No entanto, você pode usar índices geoespaciais através do driver Java do MongoDB. Para saber mais, consulte a seção Índices geoespaciais do guia índices na documentação do driver Java.

Índices de pesquisa do MongoDB

Não suportado. No entanto, você pode usar índices do MongoDB Search por meio do driver Java do MongoDB. Para aprender mais, consulte a seção Índices de pesquisa do MongoDB Search e de pesquisa vetorial do guia de índices na documentação do driver Java.

Índices de Vector Search do MongoDB

Não suportado. No entanto, você pode usar os índice de pesquisa vetorial do MongoDB por meio do driver Java do MongoDB. Para aprender mais, consulte a seção Índices de pesquisa do MongoDB Search e de pesquisa vetorial do guia de índices na documentação do driver Java.

Multikey Indexes

Não suportado. No entanto, você pode usar índices multikey por meio do driver Java do MongoDB. Para aprender mais, consulte a seção Índices multikey (índices em campos de array) do guia de índice na documentação do driver Java.

Índices Parciais

Não suportado. No entanto, você pode usar o driver Java do MongoDB para definir uma instância de MongoClient. Em seguida, chame o método aninhado MongoCollection.createIndex(Indexes.partialFilterExpression()) para criar um índice parcial.

Validação de esquema

Não suportado. No entanto, você pode usar o driver Java do MongoDB para definir uma instância de MongoClient. Em seguida, crie um validador executando o comando collMod por meio do método MongoDatabase.runCommand().

Índices de campo único

✓

Sparse Indexes

Não suportado. No entanto, você pode usar o driver Java do MongoDB para definir uma instância de MongoClient. Em seguida, especifique IndexOptions().sparse(true) como um parâmetro em sua chamada para o método MongoCollection.createIndex() para criar um sparse index.

Unique Indexes

✓

Atualizando índices de modelo incorporado após a criação do modelo

Não suportado. No entanto, você pode descartar e recriar o índice do modelo incorporado manualmente.

Para aprender mais sobre índice, consulte o guia Índice para otimização de query.

Esta seção indica se a extensão Hibernar ORM oferece suporte a vários recursos do Hibernado ORM.

Tipo de Dados
Suporte de disponibilidade geral (GA)

Tipos de coleção (List, Set, Maps, arrays)

✓
@ElementCollection e CollectionTable não são suportados. No entanto, coleções de structs incorporados são suportadas por meio de classes incorporáveis anotadas com @Embeddable e @Struct.

Entidades incorporáveis, tipos escalares

Parcialmente compatível. Os tipos java.time.Instant, java.time.Duration, java.time.Year, java.time.ZoneId, java.time.ZoneOffset e java.util.TimeZone são compatíveis com entidades de nível superior e aninhadas.

Entidades incorporadas, binárias

✓

Entidades incorporadas, tipos de identificador

Parcialmente compatível. Defina manualmente o ID de uma entidade antes de persistir uma entidade.

Entidades Incorporadas, JSON

✓

Entidades incorporadas, semântica nula

✓

Entidades de nível superior, binários

✓

Entidades de nível superior, tipos de identificador

✓
Atribua manualmente UUIDs antes de persistir uma entidade ou gere-os automaticamente usando a anotação @UuidGenerator.

Entidades de nível superior, JSON

✓

Entidades de nível superior, semântica nula

✓

Entidades de nível superior, tipos escalares

✓

Entidades de nível superior, tipos temporais

Parcialmente compatível. Os tipos java.time.Instant, java.time.Duration, java.time.Year, java.time.ZoneId, java.time.ZoneOffset e java.util.TimeZone são compatíveis com entidades de nível superior e aninhadas.

Lógica ternária (verdadeiro, falso ou DESCONHECIDO)

Não suportado.

A extensão Hibernate ORM exige que você defina a propriedade com.mongodb.hibernate.semantics.nulls, e MQL é o único valor suportado. As comparações nulas seguem a semântica da linguagem de query do MongoDB em vez da lógica ternária do Hibernate ORM. A extensão Hibernate ORM gera uma exceção na inicialização quando a propriedade não está definida.

Funcionalidade ORM do Hibernar
Suporte de disponibilidade geral (GA)

queries HQL e JPQL, operadores agregados

✓

Queries HQL e JPQL, operadores aritméticos

Parcialmente compatível. Suporta os operador +, -, *, /, div e os unários - e + nas cláusulas SELECT e WHERE.

Não oferece suporte a chamadas de função como operandos, incluindo o operador HQL %, que o Hibernate ORM reescreve para uma chamar de função mod().

Para aprender mais, consulte a seção Usar expressões computadas no guia Especificar uma query.

Queries HQL e JPQL, operadores de array

✓

Queries HQL e JPQL, Funções de Data e Hora

Parcialmente compatível. Compatível com as funções extract() e format() em um campo de data e hora em uma cláusula SELECT, traduzindo-as para operadores de data do MongoDB e o operador $dateToString. Cada função é compatível com um conjunto específico de campos de data e hora e códigos de padrão. Para aprender mais, consulte a guia Use Datetime Functions in query.

Queries HQL e JPQL, funções de string

Parcialmente compatível. Suporta as funções length(), upper(), lower(), concat(), substring(), locate(), replace(), trim(), pad() e repeat() e o operador || em um campo string em uma cláusula SELECT, traduzindo-os para operadores de string do MongoDB. Não suporta as funções position(), overlay(), left(), right() ou collate(). Para obter mais informações e ver exemplos, consulte o guia Use String Functions in Queries.

Queries HQL e JPQL, expressões case

Parcialmente compatível.

  • Suporta expressões CASE simples e pesquisadas em uma cláusula SELECT, como um operando de uma comparação em uma cláusula WHERE e na cláusula SET de uma declaração de atualizar em massa. Traduz-os para o operador $switch do MongoDB.

  • Não oferece suporte a expressões CASE em uma cláusula ORDER BY, a menos que a mesma expressão CASE seja uma chave GROUP BY. Além disso, não oferece suporte a expressões CASE como a expressão de correspondência de um predicado LIKE, como a expressão de teste de um predicado IN ou IS NULL, ou como um predicado de cláusula WHERE.

Para obter mais informações e ver um exemplo, consulte a seção Expressões de caso de uso para lógica condicional no guia Especificar uma query.

queries HQL e JPQL, operadores de comparação

  • >, >=, <, <=, =, <>: Suportado, inclusive com operandos computados. Para saber mais, consulte a seção Usar Expressões Computadas no guia Especificar uma Query.

  • EXISTS: Parcialmente compatível. Suporta uma subconsulta EXISTS que filtra em elementos de um array incorporado de um único campo, traduzindo-a para o operador $elemMatch do MongoDB. Não oferece suporte a determinadas subconsultas EXISTS. Para saber mais, consulte a seção EXISTS no guia Especificar uma query.

  • BETWEEN: Compatível. Traduz para os operadores $gte e $lte do MongoDB. Para aprender mais, consulte a seção BETWEEN no guia Especificar uma Query.

  • IS NULL e IS NOT NULL: Suportado. Corresponde a valores explicitamente nulos e campos ausentes ou à negação desses valores, traduzindo-se para o operador $match do MongoDB. Para aprender mais, consulte as seções IS NULL e IS NOT NULL no guia Especificar uma Query.

  • IN e NOT IN: Parcialmente suportado. Suporta uma lista de literais ou parâmetros testados em relação a um caminho do campo, traduzindo para os operadores $in e $nin do MongoDB. Não suporta uma subconsulta ou uma expressão com valor de array como lista. Para aprender mais, consulte as seções IN e NOT IN no guia Especifique uma query.

  • Comparações com null: Suportado. Aplicar a semântica nula da linguagem de query do MongoDB em vez da lógica ternária do Hibernate ORM, portanto, uma comparação com null corresponde a valores explicitamente nulos e campos ausentes. Para aprender mais, consulte a seção Comparar valores de campo com nulo no guia Especificar uma query.

  • Predicados de valor de linha: Parcialmente suportado. Suporta os operador =, <>, IN e NOT IN em uma lista de campo entre parênteses, como where (title, year) = (:t, :y), traduzindo cada predicado para comparações $eq do MongoDB por componente. Não oferece suporte a predicados de valor de linha que usam o operador >, >=, < ou <=. Para aprender mais, consulte a seção Comparar vários campos de uma vez no guia Especificar uma query.

  • LIKE: Compatível. Traduz para o operador $regex do MongoDB.

  • ANY, ALL: Sem suporte. Você pode usar o método createNativeQuery() e passar operador de comparação em sua declaração de linguagem de query do MongoDB. Para aprender mais sobre query nativo, consulte o guia Executar query de banco de dados nativo.

Queries HQL e JPQL, operadores de elementos

✓

Queries HQL e JPQL, operadores de avaliação

Parcialmente compatível. Suporta o operador de avaliação $regex do MongoDB traduzindo os predicados LIKE, NOT LIKE, ILIKE e NOT ILIKE para filtros de expressão regular. Para obter mais informações e ver exemplos, consulte a seção LIKE no guia Especificar uma Query.

query HQL e JPQL, Agrupamento

Parcialmente compatível. Suporta as cláusulas GROUP BY e HAVING, que são traduzidas para os estágios $group e $match do MongoDB. Uma chave de agrupamento pode ser uma referência de campo ou uma expressão computada. Para obter mais informações e ver exemplos, consulte a seção Resultados do grupo no guia Modificar resultados da query.

  • Chaves de referência de campo: Suportado, incluindo campos de embeddables de agregação @Struct e entidades unidas.

  • Funções de agregação em um embeddable de agregação @Struct: Não suportado. Você pode aplicar uma função de agregação a um campo de um embeddable, como em count(a.intField), mas não ao próprio embeddable, como em count(a).

  • Chaves de expressão computadas: Suportado. Uma expressão na cláusula SELECT ou HAVING é resolvida como uma chave de agrupamento somente quando você grava as duas de forma idêntica.

  • Colunas perdidas: Não suportado. Cada coluna na cláusula SELECT, HAVING ou ORDER BY deve ser uma chave de agrupamento ou estar contida em uma.

  • ORDER BY sobre uma chave de agrupamento: Suportado, tanto para chaves de referência de campo quanto para chaves de expressão computadas.

  • SELECT DISTINCT: Sem suporte, com ou sem GROUP BY.

  • DISTINCT dentro de uma função de agregação: Suportado. Para aprender mais e ver exemplos, consulte a seção Resumir valores distintos no guia Especificar uma query.

query HQL e JPQL, Joins

Parcialmente compatível. Você pode unir entidades navegando em uma associação mapeada, como em from Movie m join m.comments c, ou nomeando uma entidade e fornecendo uma cláusula ON, como em from Movie m join Comment c on c.date > m.released. Cada junção é traduzida para um estágio $lookup e $unwind do MongoDB. Para ver exemplos, consulte o guia Unir entidades entre coleções.

  • Joins internos e externos esquerdos: Com suporte.

  • JOIN FETCH cláusulas: Suportadas.

  • Joins encadeados: Suportado. Você pode fazer join em mais de duas entidades.

  • Joins de chave composta: Parcialmente suportado. Você pode fazer join de uma associação @ManyToOne ou @OneToOne cuja entidade de destino tenha uma chave composta @EmbeddedId. Você também pode comparar identificadores compostos inteiros com = em uma condição ON.

    Não suporta a anotação @JoinColumn em tal associação, ordenando comparações entre identificadores inteiros e associações @ManyToMany que envolvem uma chave composta.

    Para aprender mais, consulte a seção Composite Key Joins no guia Join Entities Across Coleções.

  • ON condições: Parcialmente suportado. Uma condição ON suporta os mesmos operadores de comparação, lógicos e de predicado que uma cláusula WHERE. Isso inclui condições compostas que combinam várias comparações de campo com AND ou OR, e condições de faixa e desigualdade. Uma condição ON deve comparar colunas. Você não pode comparar referências de entidade, como em on m = c.movie, ou navegar em uma associação dentro da condição, como em on c.movie.title = 'Blue Jasmine'.

  • Joins de right outer, full outer, cross, lateral e subquery: Não compatível. Você pode usar o método createNativeQuery() para executar uma operação de agregação que consulta várias coleções. Para aprender mais sobre queries nativas, consulte a guia Perform queries nativas de banco de dados.

queries HQL e JPQL, operadores lógicos

✓

Queries HQL e JPQL, funções de string

Parcialmente compatível. Oferece suporte às funções character_length(), length(), substring(), trim(), upper(), lower(), pad(), lpad(), rpad(), concat(), locate() e repeat() e ao operador de concatenação ||. Outras funções de string do Hibernate ORM não são suportadas.

Funcionalidade ORM do Hibernar
Suporte de disponibilidade geral (GA)

Cache de primeiro nível

✓

Cache de segundo nível

✓

Esta seção indica se a extensão Hibernate ORM suporta vários frameworks ou bibliotecas externas.

Framework ou Library
Suporte de disponibilidade geral (GA)

Spring Boot e Spring Data JPA

Parcialmente compatível. A extensão Hibernate ORM fornece um Spring Boot starter que configura JPA com suporte MongoDB e repositórios Spring Data JPA. Não garantimos suporte para todos os recursos do Spring Boot ou Spring Data. Para saber mais, consulte a seção Integração do Spring Boot e Spring Data JPA.