簡體   English   中英

如何將可選參數傳遞給過程?

[英]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為nullcall.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM