sql >> Databáze >  >> RDS >> Mysql

Hibernujte JPA, MySQL a TinyInt(1) pro Boolean místo bitů nebo znaků

@Type anotace je anotace Hibernate.

V plné verzi JPA2 (s Hibernate 3.6+ ), způsob, jak mapovat booleovské pole na typ SQL TINYINT(1) namísto BIT(1), je použít atribut columnDefinition.

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

nb:Zdá se, že atribut length v tomto případě nemá žádný vliv, pak použijeme (1) syntaxi.

S Hibernací 4.0+ , tento druh syntaxe může způsobit runtime chybu, jako je tato:

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

Zdá se, že v tomto případě je vaším jediným způsobem použití tinyInt1isBit=false v připojovacím řetězci zdroje dat MySQL takto:

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

Mimochodem, nyní můžete použít atribut length takto:

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


  1. Spuštění ProxySQL jako pomocného kontejneru na Kubernetes

  2. Zabraňte zadávání duplicitních dat do databáze mysql

  3. export mysql seznamu tabulek z mysql do csv souboru pomocí php

  4. Jak vybrat top 1 a seřadit podle data v Oracle SQL?