2

service.xml にこの種のエンティティがあるとします。

<entity name="Answer" local-service="true" remote-service="true">
    <!-- PK fields -->
    <column name="answer_id" type="long" primary="true" />
    <!-- Other fields -->
    <column name="user_id" type="long" />
    <column name="answer" type="String" />
    <column name="date_answered" type="Date" />
</entity>

thisthisのような投稿を見ると、Liferay 6 Service Builder を使用すると文字列型のみを指定でき、テキスト型は指定できないことがわかります。テキスト型を使用する場合は、生成された SQL スクリプトを手動で変更する必要があります。のように、portlet-model-hints.xml ファイルを編集することもできるようです。

<field name="answer" type="String">
    <hint name="max-length">5000</hint>
</field>

この場合、フィールド タイプは生成された SQL ファイルで "TEXT" に設定されます。

しかし、「回答」フィールドを文字列からテキスト フィールドに更新する必要がある場合、テーブルは最初のスキーマに従って既に生成されているのでしょうか?

回答ありがとうございます

4

2 に答える 2

1

service.xml に何らかの変更を加えると、データベース テーブルが自動的に変更されることが理想的です。

1) ポートレットのアンデプロイを試みる 2) 作業フォルダーと一時フォルダーをクリアする 3) サーバーを再始動する 4) その後、ポートレットを再デプロイする

注: sql ファイルを更新するよりも、portlet-model-hints.xml を更新する方が正しい方法です。

それが役に立てば幸い。

于 2012-05-17T07:04:41.633 に答える
0

その場合、tables.sqlからすべてのエントリを削除し、フィールドを更新した後、サービスを再構築します。

于 2012-05-16T17:41:26.717 に答える