Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hibernate JPA, MySQL và TinyInt (1) cho Boolean thay vì bit hoặc char

@Type annotation là một chú thích Hibernate.

Ở JPA2 đầy đủ (với Hibernate 3.6+ ), cách ánh xạ trường Boolean thành kiểu SQL TINYINT (1) thay vì BIT (1), là sử dụng thuộc tính columnDefinition.

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

Thuộc tính nb:length dường như không có tác dụng trong trường hợp này, khi đó chúng tôi sử dụng cú pháp (1).

Với Hibernate 4.0+ , loại cú pháp này có thể gây ra lỗi thời gian chạy như thế này:

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

Có vẻ như trong trường hợp này, cách duy nhất của bạn là sử dụng tinyInt1isBit =false trong chuỗi kết nối nguồn dữ liệu MySQL như sau:

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

Nhân tiện, bây giờ bạn có thể sử dụng thuộc tính length như sau:

@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. Làm thế nào để sử dụng câu lệnh LOAD DATA INFILE khi tệp nằm ở vị trí khác?

  2. MYSQL:cách sắp xếp lại bảng

  3. Làm cho mysql_fetch_assoc tự động phát hiện các kiểu dữ liệu trả về?

  4. Bảng thay đổi MySQL và chuyển đổi dữ liệu từ văn bản sang ngày giờ

  5. Làm thế nào để sử dụng các mô hình django có khóa ngoại trong các DB khác nhau?