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

Cách tăng độ dài của một chuỗi trong mysql khi ánh xạ bằng JPA

Điều này là do độ dài mặc định của VARCHAR cột trong câu lệnh DDL được tạo bởi hầu hết các nhà cung cấp JPA (bao gồm cả Hibernate và EclipseLink) là 255. Chỉ định length thuộc tính cho @Column chú thích giúp ghi đè giá trị để giá trị mới được chọn bởi trình tạo giản đồ của nhà cung cấp JPA.

Đây là một giả định không chính xác. Nhà cung cấp JPA sẽ chỉ tạo bảng một lần và sẽ không tự động thay đổi độ dài của bảng bên dưới trong suốt thời gian tồn tại của ứng dụng và chỉ khi bạn định cấu hình trình cung cấp để tạo / cập nhật định nghĩa bảng ngay từ đầu. Hơn nữa, ánh xạ mặc định của StringVARCHAR trong SQL loại.

Dường như bạn đã định cấu hình nhà cung cấp JPA để tạo các bảng khi cần thiết (sau khi có thể bỏ chúng), trong quá trình khởi tạo. Nếu bạn đang sử dụng Hibernate, điều này được thực hiện bằng cách sử dụng hibernate.hbm2ddl.auto thuộc tính được chỉ định trong persistence.xml với giá trị là update , create hoặc create-drop . Với EclipseLink, bạn sẽ chỉ định thuộc tính eclipselink.ddl-generation với giá trị là create-tables hoặc drop-and-create-tables .

Cả hai thuộc tính trên đều không được khuyến nghị sử dụng trong sản xuất môi trường . Cách tiếp cận lý tưởng là có các tập lệnh DDL để tạo các bảng. Vì bạn đang sử dụng VARCHAR , bạn phải chỉ định độ dài phù hợp trong định nghĩa cột, để vừa với độ dài tối đa của thông tin người dùng nhập . Ngoài ra, vì bạn đang sử dụng VARCHAR qua CHAR , công cụ cơ sở dữ liệu sẽ đảm bảo rằng không gian lưu trữ được phân bổ sẽ phụ thuộc vào kích thước của các bản ghi đang được lưu trữ.

Nếu bạn không cần một Chuỗi để VARCHAR mặc định ánh xạ và thay vào đó sử dụng một ánh xạ hợp lệ khác, sau đó bạn phải sử dụng columnDefinition thuộc tính của @Column chú thích. Ví dụ về cách sử dụng để ánh xạ Calendar tới TIMESTAMPTZ Kiểu dữ liệu SQL được hiển thị trong JPA WikiBook ; bạn sẽ cần sửa đổi điều này cho phù hợp với nhu cầu của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt mới python 3.7 / django 2.2.1 không nhận ra rằng mysqlclient đã được cài đặt

  2. JPA chèn kết quả cha / con trong MySQLIntegrityConstraintViolationException

  3. Làm cách nào để Tính Diện tích Đa giác trong Cơ sở dữ liệu MySQL Khi các Điểm của Đa giác là Độ dài Vĩ độ?

  4. Cảnh báo:mysqli_query ():Không thể tìm nạp mysqli

  5. mysql union sai cột trong kết quả