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

Jak zwiększyć długość ciągu w mysql podczas mapowania za pomocą JPA?

Dzieje się tak, ponieważ domyślna długość VARCHAR kolumn w instrukcjach DDL utworzonych przez większość dostawców JPA (w tym Hibernate i EclipseLink) wynosi 255. Określanie length atrybut do @Column adnotacja pomaga nadpisać wartość, dzięki czemu nowa wartość jest pobierana przez generator schematów dostawcy JPA.

To błędne założenie. Dostawca JPA utworzy tabele tylko raz i nie będzie dynamicznie zmieniał długości tabeli bazowej w okresie istnienia aplikacji, i tylko wtedy, gdy skonfigurujesz dostawcę tak, aby w pierwszej kolejności tworzył/aktualizował definicje tabel. Co więcej, domyślne mapowanie String to SQL VARCHAR typ.

Wygląda na to, że skonfigurowałeś dostawcę JPA do tworzenia tabel w razie potrzeby (po ewentualnym ich porzuceniu) podczas procesu inicjalizacji. Jeśli używasz Hibernate, odbywa się to za pomocą hibernate.hbm2ddl.auto właściwość określona w persistence.xml o wartości update , create lub create-drop . W przypadku EclipseLink należy określić właściwość eclipselink.ddl-generation z wartością create-tables lub drop-and-create-tables .

Nie zaleca się używania obu powyższych właściwości w produkcji środowisko . Idealnym podejściem jest posiadanie skryptów DDL do tworzenia tabel. Ponieważ używasz VARCHAR , należy określić odpowiednią długość w definicji kolumny, aby dopasować się do maksymalnej długości danych wejściowych użytkownika . Dodatkowo, ponieważ używasz VARCHAR ponad CHAR , silnik bazy danych zapewni, że przydzielona przestrzeń pamięci będzie zależeć od rozmiaru przechowywanych rekordów.

Jeśli nie potrzebujesz ciągu znaków do domyślnego VARCHAR mapowania i zamiast tego użyj innego poprawnego mapowania, musisz użyć columnDefinition atrybut @Column adnotacja. Przykładowe użycie mapowania Calendar do TIMESTAMPTZ Typ danych SQL jest pokazany w JPA WikiBook ; musisz to zmodyfikować, aby odpowiadało Twoim potrzebom.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql wildcard (ignoruj ​​jeden/dwa znaki w wyszukiwaniu)

  2. MySQL i polskie słowa

  3. Najlepsze praktyki dla systemu wersjonowania danych mysql

  4. Wielokrotne relacje między dwoma podmiotami, czy to dobra praktyka?

  5. Czy MySQL FIND_IN_SET lub odpowiednik może używać indeksów?