Mysql
 sql >> Database >  >> RDS >> Mysql

Iberna JPA, MySQL e TinyInt(1) per Boolean invece di bit o char

L'annotazione @Type è un'annotazione di ibernazione.

Per intero JPA2 (con Hibernate 3.6+ ), il modo per mappare un campo booleano su un tipo SQL TINYINT(1) invece di BIT(1), consiste nell'usare l'attributo columnDefinition.

@Column(nullable = false, columnDefinition = "TINYINT(1)")
private boolean enabled;

nb:l'attributo length sembra non avere alcun effetto in questo caso, quindi utilizziamo la sintassi (1).

Con Sospensione 4.0+ , questo tipo di sintassi può causare un errore di runtime come questo :

Wrong column type Found: bit, expected: TINYINT(1)

Sembra che in questo caso il tuo unico modo sia usare tinyInt1isBit=false nella stringa di connessione dell'origine dati MySQL in questo modo:

jdbc:mysql://server_host:3306/database?tinyInt1isBit=false

A proposito, ora puoi utilizzare l'attributo di lunghezza in questo modo:

@Column(nullable = false, columnDefinition = "TINYINT", length = 1)
private boolean enabled;