2

新しいエンティティを作成し、entitySave() で保存してから、ページ リクエストが完了する前にそのエンティティの ID を取得したいと考えています。

ID に対して getter を実行すると、「0」が返されますが、確認すると、データベースが ID を生成しています。

私のモデルでの私のプロパティ宣言は次のとおりです。

property name="id" fieldtype="id" generator="identity" column="member_id";

エンティティを作成して保存し、新しいエンティティ ID へのアクセスを試みます。

newProfile = entityNew("member");
newProfile.setMemento(args); // a helper method to populate the entity
entitySave(newProfile);

//ormFlush() // have tried this, but makes no difference
//ormReload(newProfile) //  have tried this, but no difference

//I now want to access the ID of the new profile, but it is returning '0'
newProfileID = newProfile.getID();

これも成功せずに試しました

transaction {
        entitySave(newProfile);
    }

    writeDump(newProfile);

私がここで見逃している可能性があるものについての指針はありますか?

どうもありがとう!

**UPDATE* * 列のマッピングに問題があるようです。プロパティ名を「id」以外に変更すると、正常に動作します。プロパティが生成された値を取得しないのは、プロパティ名が「id」の場合のみです。

この構成には、値が 0 の getID() があります。

property name="id" fieldtype="id" generator="identity" column="member_id";

プロパティ名を「id」以外に変更すると、DB の member_id の値が返されます。

property name="myid" fieldtype="id" generator="identity" column="member_id";
4

2 に答える 2

1

デフォルトでは、クエリはリクエストの最後に実行されるため、Hibernate にクエリをすぐに実行させる必要があります。

あなたが試すことができます:

transaction{
    entitySave(newProfile);
}

または

entitySave(newProfile);
ORMFlush();

これらのいずれかにより、必要なときに Hibernate がクエリを実行します。

于 2012-08-27T03:20:18.190 に答える