プロジェクトにgwtとpostgresを使用しています。フロントエンドには、[プロジェクトの保存]ボタンをクリックしたときにバックエンドのテーブルにデータを保存しようとしているウィジェットがいくつかあります(これは、作成されたプロジェクトの名前にもなります)。
非同期コールバックの部分では、複数のテーブルを設定しています。しかし、それはデータを適切に送信していません。次のエラーが発生します。
org.postgresql.util.PSQLException: ERROR: insert or update on table "entitytype" violates foreign key constraint "entitytype_pname_fkey"
Detail: Key (pname)=(Project Name) is not present in table "project".
しかし、プロジェクトテーブルでselectステートメントを実行すると、プロジェクト名が存在することがわかります。
コールバック部分は次のようになります。
oksave.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
if(erasync == null)
erasync = GWT.create(EntityRelationService.class);
AsyncCallback<Void> callback = new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(Void result){ }
};
erasync.setProjects(projectname, callback);
for(int i = 0; i < boundaryPanel.getWidgetCount(); i++){
top = new Integer(boundaryPanel.getWidget(i).getAbsoluteTop()).toString();
left = new Integer(boundaryPanel.getWidget(i).getAbsoluteLeft()).toString();
if(widgetTitle.startsWith("ATTR")){
type = "regular";
erasync.setEntityAttribute(name1, name, type, top, left, projectname, callback);
} else{
erasync.setEntityType(name, top, left, projectname, callback);
}
}
}
質問:
- 他のすべてのテーブルが特定のテーブルに依存している非同期コールバックに複数を設定するのは間違っていますか?
- 上記のコードでsetProjectsと言うと、最初に完了してから次のコードに移動しませんか?
ご入力いただければ幸いです。
ありがとうございました。