Este arquivo fornece as anotações de mapeamento do JPA para referência rápida e/ou resumo. Vamos começar!
Anotações do JPA
Vamos descrever cada anotação com links para o seu documento Java e suas seções seções de documentação oficial.
@Access
A anotação @Access é usada para especificar o tipo de acesso da classe de entidade associada, superclasse mapeada ou atributo de classe e entidade incorporável.
@AssociationOverride
A anotação @AssociationOverride é usada para substituir um mapeamento de associação (por exemple, @ManyToOne
, @OneToOne
, @OneToMany
, @ManyToMany
) herdado de uma superclasse mapeada ou de um incorporável.
@AssociationOverrides
O @AssociationOverrides é usado para agrupar várias anotações @AssociationOverride.
@AttributeOverride
A anotação @AttributeOverride é usada para substituir um mapeamento de atributo herdado de uma superclasse mapeada ou de um incorporável.
@AttributeOverrides
O @AttributeOverrides é usado para agrupar várias anotações @AttributeOverride
@Basic
A anotação @Basic é usada para mapear um tipo de atributo básico para uma coluna do banco de dados.
@Cacheable
A anotação @Cacheable é usada para especificar se uma entidade deve ser armazenada no cache de segundo nível.
@CollectionTable
A anotação @CollectionTable é usada para especificar a tabela de banco de dados que armazena os valores de uma coleção de tipos básica ou incorporável.
@Column
A anotação @Column é usada para especificar o mapeamento entre um atributo de entidade básico e a coluna da tabela de banco de dados.
@ColumnResult
A anotação @ColumnResult é usada em conjunto com as anotaçãoes @SqlResultSetMapping ou @ConstructorResult para mapear uma coluna SQL para uma determinada consulta SELECT.
@ConstructorResult
A anotação @ConstructorResult é usada em conjunto com as anotações @SqlResultSetMapping para mapear colunas de uma determinada consulta SELECT para um determinado construtor de objeto.
@Convert
A anotação @Convert é usada para especificar a implementação de AttributeConverter
usada para converter o atributo básico atualmente anotado.
@Converter
A anotação @Converter é usada para especificar que a implementação do atributo atual AttributeConverter
pode ser usada como um conversor de atributo básico JPA.
@Converts
A anotação @Converts é usada para agrupar várias anotações @Convert.
@DiscriminatorColumn
A anotação @DiscriminatorColumn é usada para especificar o nome da coluna discriminadora e o tipo discriminador para as estratégias SINGLE_TABLE e JOINED.
@DiscriminatorValue
A anotação @DiscriminatorValue é usada para especificar qual valor da coluna descriminada é usado para mapear a entidade atualmente anotada.
@ElementCollection
A anotação @ElementCollection é usada para especificar uma coleção de tipos básicos ou incorporáveis.
@Embeddable
A anotação @Embeddable é usada para especificar tipos incorporáveis. Como os tipos básicos, os tipos incorporáveis não tem identidade, sendo gerenciados por sua entidade proprietária.
@Embedded
A anotação @Embedded é usada para especificar que um determinado atributo de entidade representa um tipo incorporável.
@EmbeddedId
A anotação @EmbeddedId é usada para especificar que o identificador de entidade é um tipo incorporável.
@Entity
A anotação @Entity é usada para especificar que a classe anotada atualmente representa um tipo de entidade. Ao contrário dos tipos básicos e incorporável, os tipode de entidade tem uma identidade e seu estado é gerenciado pelo contexto de pesistência subjacente.
@EntityListeners
A anotação @EntityListeners é usada para especificar uma matriz de classes de ouvintes de retorno de chamada que são usadas pela entidade anotada atualmente.
@EntityResult
A anotação @EntityResult é usada com a anotação @SqlResultSetMapping para mapear as colunas selecionadas para uma entidade.
@Enumerated
A anotação @Enumerated é usada para especificar que um atributo de entidade representa um tipo enumerado.
@ExcludeDefaultListeners
A anotação @ExcludeDefaultListeners é usada para especificar que a entidade atualmente anotada pula a invocação de qualquer ouvinte padrão;
@ExcludeSuperclassListeners
A anotação @ExcludeSuperclassListeners é usada para especificar que a entidade atualmente anotada pula a invocação de ouvintes declarados por sua superclasse.
@FieldResult
A anotação @FieldResult é usada com a anotação @EntityResult para mapear as colunas selecionadas para os campos de alguma entidade específica.
@ForeignKey
A anotação @ForeignKey é usada para especificar a chave estrangeira associada ao mapeamento @JoinColumn. A @ForeignKeyannotation
é usada apenas se a ferramenta de geração automática de esquema estiver ativada. Nesse caso, ele permite que você personalize a definição de chave estrangeira subjacente.
@GeneratedValue
A anotação @GeneratedValue especifica que o valor do identificador de entidade é gerado automaticamente usando uma coluna de identidade, uma sequência de banco de dados ou um gerador de tabelas. O Hibernate suporta o mapeamento @GeneratedValue
mesmo para os identificadores de UUID.
@Id
A anotação @Id especifica o identificador da entidade. Uma entidade deve sempre ter um atributo identificador, que é usado ao carregar a entidade em um determinado contexto de persistência.
@IdClass
A anotação @IdClass é usada se a entidade atual definiu um identificador composto. Uma classe separada encapsula todos os atributos do identificador, que são espelhados pelo mapeamento de entidade atual.
@Index
A anotação @Index é usada pela ferramenta de geração automática de esquemas para criar um índice do banco de dados.
@Inheritance
A anotação @Inheritance é usada para especificar a estratégia de herança de uma determinada hierarquia de classes de entidade.
@JoinColumn
A anotação @JoinColumn é usada para especificar a coluna FOREIGN KEY usada ao ingressar em uma associação de entidades ou em uma coleção incorporável.
@JoinColumns
A anotação @JoinColumns é usada para agrupar várias anotações @JoinColumn, que são usadas ao mapear a associação de entidades ou uma coleção incorporável usando um identificador composto.
@JoinTable
A anotação @JoinTable é usada para especificar a tabela de links entre duas outras tabelas de banco de dados.
@Lob
A anotação @Lob é usada para especificar que o atributo de entidade atualmente anotado representa um tipo de objeto grande.
@ManyToMany
A anotação @ManyToMany é usada para especificar um relacionamento de banco muitos para muitos.
@ManyToOne
A anotação @ManyToOne é usada para especificar um relacionamento de banco de dados muitos-para-um.
@Mapkey
A anotação @MapKey é usada para especificar a chave de uma associação java.util.Map para a qual o tipo de chave é a chave primária ou um atributo da entidade que representa o valor do mapa.
@MapKeyClass
A anotação @MapKeyClass é usada para especificar o tipo da chave do mapa de uma associação java.util.Map.
@MapKeyColumn
A anotação @MapKeyColumn é usada para especificar a coluna do banco de dados, que armazena a chave de uma java.util.Mapassociation para a qual a chave do mapa é um tipo básico.
@MapKeyEnumerated
A anotação @MapKeyEnumerated é usada para especificar que a chave da associação java.util.Map é um Java Enum.
@MapKeyJoinColumn
A anotação @MapKeyJoinColumn é usada para especificar que a chave da associação java.util.Map é uma associação de entidades. A coluna da chave do mapa é uma FOREIGN KEY em uma tabela de links que também se junta à tabela do proprietário do Mapa com a tabela em que reside o valor do Mapa.
@MapKeyJoinColumns
A anotação @MapKeyJoinColumns é usada para agrupar vários mapeamentos @MapKeyJoinColumn quando a chave de associação java.util.Map usa um identificador composto.
@MapKeyTemporal
A anotação @MapKeyTemporal é usada para especificar que a chave da associação java.util.Map é um @TemporalType (por exemplo, DATE, TIME, TIMESTAMP).
@MappedSuperclass
A anotação @MappedSuperclass é usada para especificar que os atributos de tipo anotados atualmente são herdados por qualquer entidade de subclasse.
@MapsId
A anotação @MapsId é usada para especificar que o identificador de entidade é mapeado pelo @ManyToOne atualmente anotado ou @OneToOne associado.
@NamedAttributeNode
A anotação @NamedAttributeNode é usada para especificar cada nó de atributo individual que precisa ser buscado por um Gráfico de Entidade.
@NamedEntityGraph
A anotação @NamedEntityGraph é usada para especificar um Gráfico de Entidade que pode ser usado por uma consulta de entidade para substituir o plano de carregamento padrão.
@NamedEntityGraphs
A anotação @NamedEntityGraphs é usada para agrupar várias anotações @NamedEntityGraph.
@NamedNativeQueries
A anotação @NamedNativeQueries é usada para agrupar várias anotações @NamedNativeQuery.
@NamedNativeQuery
A anotação @NamedNativeQuery é usada para especificar uma consulta SQL nativa que pode ser recuperada posteriormente por seu nome.
@NamedQueries
A anotação @NamedQueries é usada para agrupar várias anotações @NamedQuery .
@NamedQuery
A anotação @NamedQuery é usada para especificar uma consulta JPQL que pode ser recuperada posteriormente por seu nome.
@NamedStoredProcedureQueries
A anotação @NamedStoredProcedureQueries é usada para agrupar várias anotações de @NamedStoredProcedureQuery .
@NamedStoredProcedureQuery
A anotação @NamedStoredProcedureQuery é usada para especificar uma consulta de procedimento armazenado que pode ser recuperada posteriormente por seu nome.
@NamedSubgraph
A anotação @NamedSubgraph usada para especificar um subgráfico em um gráfico de entidades.
@OneToMany
A anotação @OneToMany é usada para especificar um relacionamento de banco de dados um-para-muitos.
@OneToOne
A anotação @OneToOne é usada para especificar um relacionamento de banco de dados um-para-um.
@OrderBy
A anotação @OrderBy é usada para especificar os atributos da entidade usados para classificação ao buscar a coleção atualmente anotada.
@OrderColumn
A anotação @OrderColumn é usada para especificar que a ordem de coleta de anotação atual deve ser materializada no banco de dados.
@PersistenceContext
A anotação @PersistenceContext é usada para especificar o EntityManager que precisa ser injetado como dependência.
@PersistenceContexts
A anotação @PersistenceContexts é usada para agrupar várias anotações @PersistenceContext.
@PersistenceProperty
A anotação @PersistenceProperty é usada pela anotação @PersistenceContext para declarar propriedades do provedor JPA que são passadas para o contêiner subjacente quando o EntityManager instância é criada.
@PersistenceUnit
A anotação @PersistenceUnit é usada para especificar o EntityManagerFactory que precisa ser injetado como dependência.
@PersistenceUnits
A anotação @PersistenceUnits é usada para agrupar várias anotações @PersistenceUnit.
@PostLoad
A anotação @PostLoad é usada para especificar um método de retorno de chamada que é acionado depois que uma entidade é carregada.
@PostPersist
A anotação @PostPersist é usada para especificar um método de retorno de chamada que é acionado após uma entidade ser persistida.
@PostRemove
A anotação @PostRemove é usada para especificar um método de retorno de chamada que é acionado depois que uma entidade é removida.
@PostUpdate
A anotação @PostUpdate é usada para especificar um método de retorno de chamada que é acionado depois que uma entidade é atualizada.
@PrePersist
A anotação @PrePersist é usada para especificar um método de retorno de chamada que é acionado antes que uma entidade seja persistida.
@PreRemove
A anotação @PreRemove é usada para especificar um método de retorno de chamada que é acionado antes que uma entidade seja removida.
@PreUpdate
A anotação @PreUpdate é usada para especificar um método de retorno de chamada que é acionado antes de uma entidade ser atualizada.
@PrimaryKeyJoinColumn
A anotação @PrimaryKeyJoinColumn é usada para especificar que a coluna de chave primária da entidade atualmente anotada também é uma chave estrangeira para alguma outra entidade (por exemplo, uma tabela de classe base em uma estratégia de herança JOINED, a tabela primária em um mapeamento de tabela secundário ou tabela pai em um @OneToOne relação).
@PrimaryKeyJoinColumns
A anotação @PrimaryKeyJoinColumns é usada para agrupar várias anotações @PrimaryKeyJoinColumn .
@QueryHint
A anotação @QueryHint é usada para especificar uma dica do provedor JPA usada por uma @NamedQuery ou por uma @NamedNativeQueryannotation.
@SecondaryTable
A anotação @SecondaryTable é usada para especificar uma tabela secundária para a entidade atualmente anotada.
@SecondaryTables
A anotação @SecondaryTables é usada para agrupar várias anotações de @SecondaryTable .
@SequenceGenerator
A anotação @SequenceGenerator é usada para especificar a sequência de banco de dados usada pelo gerador de identificadores da entidade anotada atualmente.
@SqlResultSetMapping
A anotação @SqlResultSetMapping é usada para especificar o ResultSet mapeamento de uma consulta SQL nativa ou procedimento armazenado.
@SqlResultSetMappings
A anotação @SqlResultSetMappings é usada para agrupar várias anotações @SqlResultSetMapping .
@StoredProcedureParameter
A anotação @StoredProcedureParameter é usada para especificar um parâmetro de um @NamedStoredProcedureQuery .
@Table
A anotação @Table é usada para especificar a tabela principal da entidade atualmente anotada.
@TableGenerator
A anotação @TableGenerator é usada para especificar a tabela de banco de dados usada pelo gerador de identidade da entidade atualmente anotada.
@Temporal
A anotação @temporal é usada para especificar o tipo de tempo do atributo de entidade java.util.Date ou java.util.Calendar atualmente anotado.
@Transient
A anotação @Transient é usada para especificar que um determinado atributo de entidade não deve ser persistido.
@UniqueConstraint
A anotação @UniqueConstraint é usada para especificar uma restrição exclusiva a ser incluída pelo gerador automático de esquemas para a tabela primária ou secundária associada à entidade anotada atualmente.
@Version
A anotação @Version é usada para especificar o atributo de versão usado para bloqueio otimista.