@@ -943,6 +943,10 @@ class CanonicalSpringKotlinTest {
943943 " where id = :p3"
944944 )
945945
946+ assertThat(updateStatement.parameters).containsEntry(" p1" , " Sam" )
947+ assertThat(updateStatement.parameters).containsEntry(" p2" , null )
948+ assertThat(updateStatement.parameters).containsEntry(" p3" , 3 )
949+
946950 val rows = template.update(updateStatement)
947951
948952 assertThat(rows).isEqualTo(1 )
@@ -957,4 +961,40 @@ class CanonicalSpringKotlinTest {
957961 assertThat(returnedRecord).isNotNull()
958962 assertThat(returnedRecord!! .lastName).isNull()
959963 }
964+
965+ @Test
966+ fun testUpdateWithTypeConverterAndNonNullValue () {
967+ val record = PersonRecord (id = 3 , firstName = " Sam" , lastName = LastName (" Smith" ))
968+
969+ val updateStatement = update(Person ) {
970+ set(firstName).equalTo(record::firstName)
971+ set(lastName).equalTo(record::lastName)
972+ where(id, isEqualTo(record::id))
973+ }
974+
975+ assertThat(updateStatement.updateStatement).isEqualTo(
976+ " update Person" +
977+ " set first_name = :p1," +
978+ " last_name = :p2" +
979+ " where id = :p3"
980+ )
981+
982+ assertThat(updateStatement.parameters).containsEntry(" p1" , " Sam" )
983+ assertThat(updateStatement.parameters).containsEntry(" p2" , " Smith" )
984+ assertThat(updateStatement.parameters).containsEntry(" p3" , 3 )
985+
986+ val rows = template.update(updateStatement)
987+
988+ assertThat(rows).isEqualTo(1 )
989+
990+ val selectStatement = select(
991+ id, firstName, lastName, birthDate, employed, occupation, addressId
992+ ).from(Person ) {
993+ where(id, isEqualTo(record::id))
994+ }
995+
996+ val returnedRecord = template.selectOne(selectStatement, ::personRowMapper)
997+ assertThat(returnedRecord).isNotNull()
998+ assertThat(returnedRecord!! .lastName?.name).isEqualTo(" Smith" )
999+ }
9601000}
0 commit comments