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