2009-07-27 10 views
6

サービスを使用してデータベースとやりとりするLiferay用のJSR-268ポートレットを作成しました。問題やエラーは発生せずにポートレットをデプロイできますが、サービスによって定義されたテーブルは作成されません。WARファイルをLiferayにデプロイするときにSQLテーブルが作成されない

ポートレットをテストすると「テーブルが見つかりません」というエラーは表示されません。私はまったく間違いがない!テーブルはデータベースにはありません。インターネット上でLiferay Service Builderが作成した "create.sql"ファイルを使用する必要があると私は知っていましたが、そのファイルはどこにも表示されません。

誰かが私を助けることができますか?

答えて

10

テーブルが作成されたことはありませんか?私は手でテーブルを削除したときも同様の問題がありました。私はポートレットを再度配備するときに再び作成されると考えましたが、それは起こりませんでした。私はそれがMETA-INF/tables.sql中(擬似)SQLを実行する前に、Liferayは、テーブルにservicecomponentをチェック2物事をポートレットに関する情報を格納することが分かったソースコードを学んだ後

  1. service.propertiesbuild.numberでなければなりませんそれよりも高く、servicecomponentに格納され、
  2. tables.sqlは、servicecomponentに格納されているものと異なる必要があります。

tables.sqlのみ実行されます。

これを実現する簡単な方法は、ポートレットに対処するservicecomponentのすべてのエントリを削除することです。

2

servicecomponentテーブルからエントリを削除してみてください。また、ポートレットを再デプロイします。

delete FROM servicecomponent where buildNamespace="<your table namespace>" 
0

あなたは、service.xmlを内Liferayのスキーマ内の任意のポートレットは、それが存在していない場合は、それが作成されますテーブルにアクセスしようとするのは初めてのことを新しいエンティティを定義するときは、Liferayの6.2でserviceBuilderを使用している場合。

Liferayでテーブルを自動的に作成しないことがあるため、別のスキーマを使用しているときにいくつかの問題があります。次に、Creation SQL文を実行して手動で作成し、LocalServiceUtilを使用してSQL文にアクセスする必要があります。

1

私は同じ問題に直面しており、下の解決策が私のために働いています。

手順

  1. 私はservicecomponentに保存されているものよりも高いservice.propertiesbuild.numberを変更しました。
  2. META-INFフォルダからすべてのxmlファイルを削除しました。
  3. webapp/WEB-INF/sqlフォルダからすべてのsqlファイルを削除しました。

その後ビルドサービス展開service.xmlをファイルにdefiendされているカスタムテーブルを作成します。

関連する問題