sql >> データベース >  >> RDS >> Mysql

JPAを使用してマッピングしながらmysqlで文字列の長さを増やす方法

    これは、デフォルトの長さがVARCHARであるためです。 ほとんどのJPAプロバイダー(HibernateおよびEclipseLinkを含む)によって作成されたDDLステートメントの列は255です。lengthの指定 @Columnの属性 アノテーションは値をオーバーライドするのに役立ち、JPAプロバイダーのスキーマジェネレーターによって新しい値が取得されるようにします。

    これは間違った仮定です。 JPAプロバイダーは、テーブルを1回だけ作成し、アプリケーションの存続期間中、および最初にテーブル定義を作成/更新するようにプロバイダーを構成した場合にのみ、基になるテーブルの長さを動的に変更しません。さらに、Stringのデフォルトのマッピング SQL VARCHARです タイプ。

    初期化プロセス中に、必要に応じて(場合によってはテーブルを削除した後)テーブルを作成するようにJPAプロバイダーを構成したようです。 Hibernateを使用している場合、これはhibernate.hbm2ddl.autoを使用して行われます。 persistence.xmlで指定されたプロパティ 値がupdatecreate またはcreate-drop 。 EclipseLinkでは、プロパティeclipselink.ddl-generationを指定します。 create-tablesの値を使用 またはdrop-and-create-tables

    上記のプロパティの両方を本番環境で使用することはお勧めしません環境 。理想的なアプローチは、テーブルを作成するためのDDLスクリプトを用意することです。以来、VARCHARを使用しています 、列定義で適切な長さを指定する必要があります。ユーザー入力の最大長に合わせて 。さらに、VARCHARを使用しているため CHAR以上 、データベースエンジンは、割り当てられるストレージスペースが保存されているレコードのサイズに依存することを保証します。

    デフォルトのVARCHARへの文字列が必要ない場合 マッピングし、代わりに別の有効なマッピングを使用する場合は、columnDefinitionを使用する必要があります @Columnの属性 注釈。 Calendarをマッピングするための使用例 TIMESTAMPTZへ SQLデータ型は、 JPAWikiBook に表示されます。;必要に応じてこれを変更する必要があります。



    1. GROUP_CONCAT ORDER BY

    2. エラー「ORA-01789:クエリブロックの結果列の数が正しくありません」を修正しました

    3. MySQL .Net接続プールconnection.Open()が非常に遅い

    4. リレーショナルデータベースの行を削除または無効にする必要がありますか?