0

重複の可能性:
JDBC で挿入 ID を取得するには?

次のテーブルがあります。

customer(cid, ...)

book(cid, rid)

reservation(rid, ...)

bookテーブルに予約を追加し、 と の間customerに関係を追加したいreservation

rid自動生成されていることをどのように知ることができますか?クエリを実行すると、ResultSet返されましたか?

これridは、シーケンスとトリガーを使用して Oracle から自動生成されます。

4

2 に答える 2

3

あなたの質問を参照してください。あなたはステートメントを使用していると思います。この場合、使用できますStatement.RETURN_GENERATED_KEYS。また、以下のソリューションでは Oracle データベースの競合が発生する可能性があるため、このリンクも考慮してください。

ここに小さな例があります:

Connection connection = database.getConnection();
PreparedStatement statement = connection.prepareStatement(myQuery, Statement.RETURN_GENERATED_KEYS);
int count = statement.executeUpdate();
if(count <= 0){
 //value not inserted
}

ResultSet results = statement.getGeneratedKeys();

if(results.next){
 System.out.println(generatedKeys.getLong(1));
}

ORM を使用している場合:

JPA entitiyManager.merge(entity);(または更新) を使用している場合は、ID を持つ永続化されたインスタンスを返す必要があります。休止状態session.merge(entity);(または更新)と非常に似ています

于 2012-11-26T01:03:09.197 に答える
1

java/jsp の場合はわかりませんが、リレーショナル DB の場合は一連のクエリを使用する必要があります。つまり、知っている 1 つの ID (cid) を取得し、book テーブルから削除します。私が知っている他の方法はありません。

それが役立つことを願っています。

于 2012-11-26T00:40:13.000 に答える