Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Hibernate JPA, MySQL e TinyInt(1) para Boolean em vez de bit ou char


A anotação @Type é uma anotação do Hibernate.

Em JPA2 completo (com Hibernate 3.6+ ), a maneira de mapear um campo booleano para um tipo SQL TINYINT(1) em vez de BIT(1), é usar o atributo columnDefinition.
@Column(nullable = false, columnDefinition = "TINYINT(1)")
private boolean enabled;

nb:o atributo length parece não ter efeito neste caso, então usamos a sintaxe (1).

Com o Hibernate 4.0+ , esse tipo de sintaxe pode causar um erro de tempo de execução como este:
Wrong column type Found: bit, expected: TINYINT(1)

Parece que neste caso, sua única maneira é usar tinyInt1isBit=false na string de conexão da fonte de dados MySQL assim:
jdbc:mysql://server_host:3306/database?tinyInt1isBit=false

A propósito, agora você pode usar o atributo length assim:
@Column(nullable = false, columnDefinition = "TINYINT", length = 1)
private boolean enabled;