sql >> Databasteknik >  >> RDS >> Mysql

Hibernate JPA, MySQL och TinyInt(1) för Boolean istället för bit eller char

@Type-anteckning är en Hibernate-kommentar.

I full JPA2 (med Hibernate 3.6+ ), sättet att mappa ett booleskt fält till en SQL-typ TINYINT(1) istället för BIT(1), är att använda attributet columnDefinition.

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

nb:length-attribut verkar inte ha någon effekt i det här fallet, då använder vi (1) syntax.

Med Hibernate 4.0+ , den här typen av syntax kan orsaka ett körtidsfel som detta :

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

Det verkar som om i det här fallet är ditt enda sätt att använda tinyInt1isBit=false i MySQL-datakällans anslutningssträng så här:

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

Förresten, du kan nu använda längdattributet så här :

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


  1. Symfony3 - SQLSTATE[HY000] [2002] Ingen sådan fil eller katalog

  2. undvika MySQL-injektioner med Zend_Db-klassen

  3. Vad gör sp_reset_connection?

  4. Infoga flera rader i en MySQL-databas från en tabell