簡體   English   中英

Spring JDBCTemplate更新問題

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

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