1
私は2つのmrthods save()
とedit()
エンティティを持っています。エンティティを保存すると、日付の重複を確認し、日付期間が一意であれば保存します。そのために私はOracleの手順を使用します。プロシージャが0行を戻す場合 - この期間は一意ではありません。エンティティを編集するときはすでにdbになっていて、idでオプションのチェックが必要です。オプションのパラメータをプロシージャに渡すにはどうすればよいですか?
CallableStatement call = connection.prepareCall("{ ? = call checkDateRangesOverlap(?,?,?,?)}");
call.registerOutParameter(1, Types.INTEGER); // or whatever it is
Date dateStart = Date.from(start.atZone(ZoneId.systemDefault()).toInstant());
Date dateEnd = Date.from(end.atZone(ZoneId.systemDefault()).toInstant());
call.setDate(2, new java.sql.Date(dateStart.getTime()));
call.setDate(3, new java.sql.Date(dateEnd.getTime()));
call.setLong(4, user.getId());
call.setLong(5, id);
call.execute();
が、私は新しいエンティティを作成した場合 - idがnull
とcall.setLong(5, id);
スローエラーです。
オプションのパラメータをプロシージャに渡すにはどうすればよいですか?あなたのidはnull
できる場合は、その代わりに、あなたはこのようなsetNull()
を使用することができますcall.setLong(5, null)
を使用しての
例外は何ですか? –
新しいエンティティid = NULLを保存すると – user5620472
はい例外を共有できますか? –