-1

私のテーブル定義には、intデータ型の列があります。値が「0」の場合、jdbcTemplate updateメソッドで、このフィールドをデフォルトで「0」ではなく「NULL」で更新する必要があります。

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 NULLNULLしかし、データベーステーブルのようにどのように保存できますか?

4

2 に答える 2

3

NUllPointerExceptionが発生していることを願っています。

これを試して

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) });
于 2012-06-29T05:05:24.127 に答える
1

getLocationId()の戻り型がintであると仮定すると、以下のコードが機能します。適切な修正は、getLocationId()の署名を整数に変更し、それを初期化するコードがそれを0ではなくNULLに設定することを確認することです。

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()) });
于 2012-06-29T05:30:04.863 に答える