[英]Spring JDBCTemplate Update issue
在我的表定義中,有一列具有int數據類型。 如果值為“ 0”,則我希望jdbcTemplate更新方法默認使用“ NULL”而不是“ 0”更新此字段。
this.jdbcTemplate.update("UPDATE GCUR_OBSERVATION "
+ "SET ObserverId = ?," + "ObservationDate = ?,"
+ "PointCuring = ?"
+ " WHERE locationId = ? AND ObservationStatus = 0",
new Object[] { new Integer(newObservation.getObserverId()),
newObservation.getObservationDate(),
new Integer(newObservation.getLocationId()) });
當Point Curing
not NULL
時,以上代碼段運行良好。 但是,如何將其作為NULL
存儲在數據庫表中?
希望您收到NUll指針異常。
嘗試這個
Integer locId = null;
if(newObservation.getLocationId() != null) {
locId = new Integer(newObservation.getLocationId());
if(locId == 0) {
locId = null;
}
}
現在在這里傳遞locId。
this.jdbcTemplate.update("UPDATE GCUR_OBSERVATION "
+ "SET ObserverId = ?," + "ObservationDate = ?,"
+ "PointCuring = ?"
+ " WHERE locationId = ? AND ObservationStatus = 0",
new Object[] { new Integer(newObservation.getObserverId()),
newObservation.getObservationDate(),
locId) });
假設getLocationId()的返回類型為int,則下面的代碼將起作用。 正確的解決方法是將getLocationId()的簽名更改為Integer,並確保對其進行初始化的代碼將其設置為NULL而不是0
this.jdbcTemplate.update("UPDATE GCUR_OBSERVATION "
+ "SET ObserverId = ?," + "ObservationDate = ?,"
+ "PointCuring = ?"
+ " WHERE locationId = ? AND ObservationStatus = 0",
new Object[] { new Integer(newObservation.getObserverId()),
newObservation.getObservationDate(),
newObservation.getLocationId() == 0 ? null : new Integer(newObservation.getLocationId()) });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.