[英]How can I pass optional params to procedure?
我有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)
:
if (id == null) {
call.setNull(5, java.sql.Types.BIGINT);
} else {
call.setLong(5, id);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.