sql >> Database >  >> RDS >> Mysql

Hoe de lengte van een string in mysql te vergroten tijdens het toewijzen met behulp van JPA

Dit komt omdat de standaardlengte van VARCHAR kolommen in DDL-instructies die zijn gemaakt door de meeste JPA-providers (inclusief Hibernate en EclipseLink) is 255. De length opgeven attribuut aan de @Column annotatie helpt de waarde te overschrijven, zodat de nieuwe waarde wordt opgepikt door de schemagenerator van de JPA-provider.

Dit is een onjuiste veronderstelling. De JPA-provider maakt tabellen slechts één keer en verandert de lengte van de onderliggende tabel niet dynamisch tijdens de levensduur van de toepassing, en alleen als u de provider configureert om de tabeldefinities in de eerste plaats te maken/bijwerken. Bovendien is de standaardtoewijzing van String is de SQL VARCHAR typ.

Het lijkt erop dat u de JPA-provider hebt geconfigureerd om tabellen te maken zoals nodig (na ze mogelijk te hebben verwijderd), tijdens het initialisatieproces. Als u Hibernate gebruikt, wordt dit gedaan met behulp van de hibernate.hbm2ddl.auto eigenschap gespecificeerd in persistence.xml met een waarde van update , create of create-drop . Met EclipseLink specificeert u de eigenschap eclipselink.ddl-generation met een waarde van create-tables of drop-and-create-tables .

Beide bovenstaande eigenschappen worden niet aanbevolen voor gebruik in een productie omgeving . De ideale benadering is om DDL-scripts te hebben om de tabellen te maken. Sindsdien gebruikt u VARCHAR , moet u een geschikte lengte opgeven in de kolomdefinitie, om te passen bij de maximale lengte van de gebruikersinvoer . Bovendien, aangezien u VARCHAR . gebruikt over CHAR , zal de database-engine ervoor zorgen dat de toegewezen opslagruimte afhankelijk is van de grootte van de records die worden opgeslagen.

Als u geen string nodig heeft naar de standaard VARCHAR mapping en in plaats daarvan een andere geldige mapping gebruiken, dan moet u columnDefinition . gebruiken attribuut van de @Column annotatie. Een voorbeeldgebruik voor het toewijzen van Calendar naar de TIMESTAMPTZ SQL-gegevenstype wordt weergegeven in het JPA WikiBook ; u moet dit aanpassen aan uw behoefte.



  1. Controleer of mySQL-record is toegevoegd in de laatste x seconden

  2. Afbeelding uploaden, ajax, php, mysql

  3. Weken aftrekken van een datum in PostgreSQL

  4. MySQL-equivalent van ORACLES rank()