Mapping time field

11 respostas
datetimejpajava
M

Boa tarde,

Existe alguma forma de formatar o campo mapeado, para que sempre me retorne o valor apenas em time no formato 24 h?

@XmlElement(nillable = true)
@Column(name = "vl_hriniseg_trab")
@Temporal(TemporalType.TIME)
private Date vlHrinisegTrab;

public Date getVlHrinisegTrab() {
		return vlHrinisegTrab;
}

public void setVlHrinisegTrab(Date vlHrinisegTrab) {
		this.vlHrinisegTrab = vlHrinisegTrab;
}

Obrigado

11 Respostas

J

Seria pra retornar de uma consulta no BD ?

Se for o caso você pode passar a formatação diretamente no seu SQL:

TO_CHAR(MINHA_COLUNA_HORA, 'HH24:MI:SS')

M

Sim, para retornar informações do BD!
Achei que seria possível fazer isso sem formatar direto no banco de dados!!!

J

Cara eu acho que deve ter alguma coisa do tipo mas até o momento eu não conheço outra forma, possa ser que exista sim, de repente a galera que já tenha um conhecimento mais aprofundado em annotations do que eu saiba de algo que venha a facilitar, mas até então não encontrei nada em materiais por aí.

M

Tranquilo,

Vlw pela dica tinha até esquecido disso…já me atende dessa forma!!!

Abs

M

Não rolou no SQL, ele até retorna apenas time, porem sem ser no formato 24 hrs!! :frowning:

E

@mpissolato , você está utilizando Hibernate/JPA?
Caso esteja você pode tentar criar um atributo calculado com a anotação ‘@Formula’ sem precisar alterar mais anda na classe ou na manipulação de seus objetos…
Algo como o SQL que o @Jonathan_Medeiros comentou anteriormente:

@Formula("TO_CHAR(MINHA_COLUNA_HORA, 'HH24:MI:SS')")
String dataFormatada;

Só precisaria confirmar se o pattern é esse mesmo que ele passou…

M

Olá @Eldius,

Estou usando Eclipselink + JPA, então o problema que não estou usando como String e sim Time!!!
Até retorna formatado porem em sem ser no formato 24Hrs!!!

@Column(name = "vl_hrfimdom_inter")
private Time vlHrfimdomInter;
J

Nesse caso ao invés de utilizar o to_char(), utiliza o to_timestamp(), acredito que dará certo!

M

Então o lance é que estava usando atributo com tipo Date ou Time e ambos o java muda automaticamente, sem respeitar formatação do SQL.
Quando mudei para string já resolveu na primeira.

E

@mpissolato utilizando essa anotação @Formula ele não persiste o atributo, ele apenas calcula o valor quando você busca no banco (resumindo, é um campo calculado, não persistido)…

M

Sim, @Eldius mas o eclipselink não tem essa anotação!!!

Criado 23 de janeiro de 2017
Ultima resposta 25 de jan. de 2017
Respostas 11
Participantes 3