我有2个mrthod 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);
会抛出错误。
如何将可选参数传递给程序?
答案 0 :(得分:2)
如果您的ID可以是null
,那么您可以使用call.setLong(5, null)
代替setNull()
而不是if (id == null) {
call.setNull(5, java.sql.Types.BIGINT);
} else {
call.setLong(5, id);
}
:
var image = document.createElement('img');
image.onload = function () {
// onload callback
}
image.setAttribute('crossOrigin', '');
image.src = url + '?' + new Date().getTime();