A Documentação do Hibernate contém as informações abaixo para a @Temporal
anotação:
Em APIs Java simples, a precisão temporal do tempo não é definida. Ao lidar com dados temporais, você pode desejar descrever a precisão esperada no banco de dados. Os dados temporais podem ter precisão de DATA, HORA ou TIMESTAMP (ou seja, a data real, apenas a hora ou ambos). Use a anotação @Temporal para ajustar isso.
O que isso temporal precision of time is not defined
significa? O que são temporal
dados e sua precisão? Como isso se ajusta?
Respostas:
Essa anotação deve ser especificada para campos persistentes ou propriedades do tipo
java.util.Date
ejava.util.Calendar
. Ele só pode ser especificado para campos ou propriedades desses tipos.A
Temporal
anotação pode ser usada em conjunto com aBasic
anotação, aId
anotação ou aElementCollection
anotação (quando o valor da coleção de elementos é de um tipo temporal.Em APIs Java simples, a precisão temporal do tempo não é definida. Ao lidar com dados temporais, você pode desejar descrever a precisão esperada no banco de dados. Os dados temporais podem ter precisão de DATA, HORA ou TIMESTAMP (ou seja, a data real, apenas a hora ou ambos). Use a
@Temporal
anotação para fazer o ajuste fino.Os dados temporais são os dados relacionados ao tempo. Por exemplo, em um sistema de gerenciamento de conteúdo, a data de criação e a data da última atualização de um artigo são dados temporais. Em alguns casos, os dados temporais precisam de precisão e você deseja armazenar data / hora precisa ou ambos (
TIMESTAMP
) na tabela do banco de dados.A precisão temporal não é especificada nas principais APIs Java.
@Temporal
é umaJPA
anotação que se converte entre timestamp ejava.util.Date
. Ele também se convertetime-stamp
em tempo. Por exemplo, no snippet abaixo,@Temporal(TemporalType.DATE)
descarta o valor da hora e apenas preserva a data .De acordo com os javadocs,
[Informações acima coletadas de várias fontes]
fonte
yyyy-MM-dd
02/10/2017
e desejo convertê-la para2017-10-02
ou2017/10/02
@Temporal
é uma anotação JPA que pode ser usada para armazenar na tabela do banco de dados um dos seguintes itens de coluna:java.sql.Date
)java.sql.Time
)java.sql.Timestamp
)Geralmente, quando declaramos um
Date
campo na classe e tentamos armazená-lo.Ele será armazenado como TIMESTAMP no banco de dados.
O código acima armazenará o valor semelhante a 07/08/17 04: 33: 35.870000000 PM
Se quisermos armazenar apenas a DATA no banco de dados,
podemos usar / definir
TemporalType
.Desta vez, ele armazenaria 17/08/07 no banco de dados
Existem também alguns outros atributos
@Temporal
que podem ser usados com base no requisito.fonte
Tipos temporais são o conjunto de tipos baseados em tempo que podem ser usados em mapeamentos de estado persistente.
A lista de tipos temporais suportados inclui os três
java.sql
tiposjava.sql.Date
,java.sql.Time
ejava.sql.Timestamp
, e inclui os doisjava.util
tiposjava.util.Date
ejava.util.Calendar
.Os
java.sql
tipos são completamente descomplicados. Eles agem como qualquer outro tipo de mapeamento simples e não precisam de nenhuma consideração especial.Os dois
java.util
tipos precisam de metadados adicionais, no entanto, para indicar qual dosjava.sql
tipos JDBC usar ao se comunicar com o driver JDBC. Isso é feito anotando-os com a@Temporal
anotação e especificando o tipo JDBC como um valor doTemporalType
tipo enumerado.Existem três valores enumerados de DATE, TIME e TIMESTAMP para representar cada um dos
java.sql
tipos.fonte
usa isto
fonte
Se você está procurando uma resposta curta:
No caso de usar java.util.Date, Java realmente não sabe como se relacionar diretamente com os tipos SQL. É quando
@Temporal
entra em jogo. É usado para especificar o tipo de SQL desejado.Fonte: Baeldung
fonte
Eu uso o Hibernate 5.2 e
@Temporal
não é mais necessário.java.util.date , sql.date , time.LocalDate são armazenados no banco de dados com o tipo de dados apropriado como data / carimbo de data / hora.
fonte
Usamos a anotação @Temporal para inserir data, hora ou ambos na tabela do banco de dados. Usando TemporalType podemos inserir dados, hora ou ambos na tabela interna.
fonte