Arquivo

Posts Tagged ‘persistence’

Hibernate persistindo valores S/N ao invés de Y/N

Estes dias nos deparamos com um problema, já existia um banco de dados sendo usado por outras aplicações, onde todas as tabelas que havia colunas do tipo True/False não poderia ser persistidos com valores  Y/N que o Hibernate utiliza, exigia-se que os valores Booleanos deveriam ser persistidos em português S/N.

Assim, tivemos que fazer algumas mudanças para esse novo comportamento, foi utilizada a anotação TypeDefs para definir o novo tipo a ser utilizado. Abaixo está o exemplo simples para você entender.

package  entity;

import org.hibernate.annotations.Type;
import  javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@org.hibernate.annotations.TypeDefs({
@org.hibernate.annotations.TypeDef(name = "sim_nao",
typeClass = SimNaoType.class)})

@Entity
@Table(name = "TBL_USUARIO")
public class  Usuario {
    private Boolean ativo;
    // outros atributos

    @Column(name = "ATIVO", nullable = false, length = 1)
    @Type(type = "sim_nao")
    public Boolean getAtivo(){
        return this.ativo;
    }

    public void setAtivo(Boolean  ativo){
        this.ativo = ativo;
    }

     //setters/getters
}
package entity;

import org.hibernate.type.CharBooleanType;

public class SimNaoType extends CharBooleanType {
    @Override
    protected String getTrueString() {
        return "S";
    }

    @Override
    protected String  getFalseString() {
        return "N";
    }

    @Override
    public String getName() {
        return  "sim_nao";
    }
}