[Error] org.hibernate.HibernateException: Wrong column type in Found: COLUM bit, expected: boolean

 Its defined as a 'BIT(1)' in the DB as well. Also worked with TINYINT. This is the easiest solution I've found since the change is super-minor and no need to touch the DB. El error se produce por que MYSQL interpreta como BOOLEAN como TINYINT por lo que debemos cambiar un poco la notación de la columna:

package cl.sernapesca.siep.entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name = "tb_personal")
public class Persona implements Serializable{
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name="Cd_Usuario", unique=true, nullable=false)
 private Integer codigo;
 
 @Column(name="Nm_Usuario", nullable=false, length=45)
 private String nombre;
 
 @Column(name="Nr_Rut", nullable=false)
 private Integer rut;
 
 @Column(name="Nr_Dv", nullable=false)
 private String dv;
 
 //ERROR @Column(name="Lg_EsUsuario", nullable=true)
 @Column(name = "Lg_EsUsuario", columnDefinition = "BIT", length = 1)
 private Boolean usuario;
 
 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name="Cd_Region", referencedColumnName="Cd_OfiRegion")
 private Oficina oficina;
 
 public Integer getCodigo() {
  return codigo;
 }
 
 public void setCodigo(Integer codigo) {
  this.codigo = codigo;
 }
 
 public String getNombre() {
  return nombre;
 }
 
 public void setNombre(String nombre) {
  this.nombre = nombre;
 }
 
 public Integer getRut() {
  return rut;
 }
 
 public void setRut(Integer rut) {
  this.rut = rut;
 }
 
 public String getDv() {
  return dv;
 }
 
 public void setDv(String dv) {
  this.dv = dv;
 }
 
 public Boolean getUsuario() {
  return usuario;
 }
 
 public void setUsuario(Boolean usuario) {
  this.usuario = usuario;
 }

 public Oficina getOficina() {
  return oficina;
 }

 public void setOficina(Oficina oficina) {
  this.oficina = oficina;
 }


}

o implementando un nuevo método que maneje el Dialecto del MYSQL5.


public class Mysql5BitBooleanDialect extends MySQL5Dialect{     
    public Mysql5BitBooleanDialect() {
        super();
        registerColumnType( java.sql.Types.BOOLEAN, "bit" );        
    }       
}


You can then use it by setting the dialect in your hibernate properties: hibernate.dialect=your.package.Mysql5BitBooleanDialect Using: MySQL Server 5.5.13, Hibernate 4.1.1, JDK 1.6

No hay comentarios.:

Problemas de activación WIFI6 en LG_OLED55CXPSA

  Mi experiencia con este TV  ah sido impecable hasta ahora, llevaba un uso normal y no tenia que usar la conexión por wifi ya que tengo una...