sql >> Database teknologi >  >> RDS >> Mysql

Sådan øges længden af ​​en streng i mysql, mens du kortlægger ved hjælp af JPA

Dette skyldes, at standardlængden på VARCHAR kolonner i DDL-sætninger oprettet af de fleste JPA-udbydere (inklusive Hibernate og EclipseLink) er 255. Angivelse af length attribut til @Column annotering hjælper med at tilsidesætte værdien, så den nye værdi opfanges af JPA-udbyderens skemagenerator.

Dette er en forkert antagelse. JPA-udbyderen vil kun oprette tabeller én gang og vil ikke dynamisk ændre længden af ​​den underliggende tabel i løbet af applikationens levetid, og kun hvis du konfigurerer udbyderen til at oprette/opdatere tabeldefinitionerne i første omgang. Desuden standardtilknytningen af ​​String er SQL VARCHAR type.

Du ser ud til at have konfigureret JPA-udbyderen til at oprette tabeller efter behov (efter muligvis at have droppet dem) under initialiseringsprocessen. Hvis du bruger Hibernate, gøres dette ved hjælp af hibernate.hbm2ddl.auto egenskab angivet i persistence.xml med værdien update , create eller create-drop . Med EclipseLink ville du angive egenskaben eclipselink.ddl-generation med værdien create-tables eller drop-and-create-tables .

Begge af ovenstående egenskaber anbefales ikke til brug i en produktion miljø . Den ideelle tilgang er at have DDL-scripts til at oprette tabellerne. Siden bruger du VARCHAR , bør du angive en passende længde i kolonnedefinitionen for at passe til den maksimale længde af brugerinput . Derudover, da du bruger VARCHAR over CHAR , vil databasemotoren sikre, at den tildelte lagerplads vil afhænge af størrelsen af ​​de poster, der lagres.

Hvis du ikke har brug for en streng til standard VARCHAR mapping og i stedet bruge en anden gyldig mapping, så skal du bruge columnDefinition attribut for @Column anmærkning. Et eksempel på brug til kortlægning af Calendar til TIMESTAMPTZ SQL-datatypen er vist i JPA WikiBook ; du bliver nødt til at ændre dette, så det passer til dit behov.



  1. Installation af RODBC/ROracle-pakker på OS X Mavericks

  2. MySQL - Hent rækkeværdi fra forskellige tabeller afhængigt af rækkeværdien i en tabel

  3. Langsom ydeevne af SqlDataReader

  4. Hvordan genererer man en HTML-side dynamisk ved hjælp af PHP?