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

Jak zvýšit délku řetězce v mysql při mapování pomocí JPA

Důvodem je výchozí délka VARCHAR sloupců v příkazech DDL vytvořených většinou poskytovatelů JPA (včetně Hibernate a EclipseLink) je 255. Zadání length atribut do @Column anotace pomáhá přepsat hodnotu, takže novou hodnotu vyzvedne generátor schémat poskytovatele JPA.

Toto je nesprávný předpoklad. Poskytovatel JPA vytvoří tabulky pouze jednou a nebude dynamicky měnit délku podkladové tabulky během životnosti aplikace, a to pouze v případě, že poskytovatele nakonfigurujete tak, aby nejprve vytvářel/aktualizoval definice tabulek. Navíc výchozí mapování String je SQL VARCHAR typ.

Zdá se, že jste během procesu inicializace nakonfigurovali poskytovatele JPA tak, aby vytvářel tabulky podle potřeby (poté, co je případně zrušili). Pokud používáte Hibernate, je to provedeno pomocí hibernate.hbm2ddl.auto vlastnost specifikovaná v persistence.xml s hodnotou update , create nebo create-drop . S EclipseLink byste zadali vlastnost eclipselink.ddl-generation s hodnotou create-tables nebo drop-and-create-tables .

Obě výše uvedené vlastnosti se nedoporučují pro použití v produkci prostředí . Ideálním přístupem je mít k vytváření tabulek skripty DDL. Protože používáte VARCHAR , měli byste v definici sloupce zadat vhodnou délku, aby se vešla do maximální délky uživatelského vstupu . Navíc, protože používáte VARCHAR přes CHAR , databázový stroj zajistí, že přidělený úložný prostor bude záviset na velikosti ukládaných záznamů.

Pokud nepotřebujete řetězec k výchozímu VARCHAR mapování a místo toho použijte jiné platné mapování, pak musíte použít columnDefinition atributu @Column anotace. Příklad použití pro mapování Calendar na TIMESTAMPTZ Datový typ SQL je uveden v JPA WikiBook ; budete muset toto upravit, aby vyhovovalo vašim potřebám.



  1. Zálohujte databázi SQLite

  2. php dotaz na zeměpisnou šířku a délku iOS nevyhledává poblíž mysql lat a lon s výstupem xml

  3. Jak rychle přetřídit tabulku MySQL podle jednoho ze sloupců?

  4. 2 způsoby formátování výsledků dotazu v SQLcl (Oracle)