Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Hibernacja JPA, MySQL i TinyInt(1) dla Boolean zamiast bit lub char

Adnotacja @Type jest adnotacją Hibernate.

W pełni JPA2 (z Hibernacją 3.6+ ), sposobem odwzorowania pola logicznego na typ SQL TINYINT(1) zamiast BIT(1) jest użycie atrybutu columnDefinition.

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

nb:atrybut długości wydaje się nie działać w tym przypadku, używamy składni (1).

Z Hibernacją 4.0+ , ten rodzaj składni może spowodować taki błąd w czasie wykonywania:

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

Wygląda na to, że w tym przypadku jedynym sposobem jest użycie tinyInt1isBit=false w ciągu połączenia źródła danych MySQL w następujący sposób:

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

Przy okazji, możesz teraz użyć atrybutu długości w ten sposób:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ProgrammingError:obiekty SQLite utworzone w wątku mogą być używane tylko w tym samym wątku

  2. Drukowanie wyników zapytania w tabeli

  3. MySQL - Konwertuj MM/DD/RR na znacznik czasu uniksowy

  4. Jak odświeżyć Datagrid w WPF

  5. Jak używać XPATH w MySQL select?