Dize için Jdbctemplate sorgu: EmptyResultDataAccessException: Yanlış sonuç boyutu: 1, gerçek 0 beklendiği
Jdbctemplate db tek bir Dize değerini almak için kullanıyorum. Burada benim bir yöntemdir.
public String test() {
String cert=null;
String sql = "select ID_NMB_SRZ from codb_owner.TR_LTM_SLS_RTN
where id_str_rt = '999' and ID_NMB_SRZ = '60230009999999'";
cert = (String) jdbc.queryForObject(sql, String.class);
return cert;
}
Benim senaryoda benim sorum nasıl aşağıdaki hata iletisini bir çözüm bulabilirim yani benim sorgu üzerinde bir hit almak için DEĞİL tamamlamak mümkündür.
EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
Sadece bir istisna atmak yerine boş dönmem gerektiğini bana görünüyor. Bu durumu nasıl düzeltebilirim? Şimdiden teşekkürler.
CEVAP
JdbcTemplate , queryForİnt, queryForLong, queryForObject tüm bu yöntemler idam sorgu, yalnızca bir satır döndürür bekliyor. Hiçbir satır veya IncorrectResultSizeDataAccessException
sonucu birden fazla satır varsa . Şimdi doğru yolu bu özel durumu yakalamak değil, ya da EmptyResultDataAccessException
ama kullandığınız sorgu tek satır dönmesi gerekir emin olun. Eğer hiç mümkün değilse query
yöntemi kullanın.
List<String> strLst = getJdbcTemplate().query(sql,new RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString(1);
}
});
if ( strLst.isEmpty() ){
return null;
}else if ( strLst.size() == 1 ) { // list contains exactly 1 element
return strLst.get(0);
}else{ // list contains more than 1 elements
//your wish, you can either throw the exception or return 1st element.
}
Nasıl bir PostgreSQL '' sorg...
boundingRectWithSize NSAttributedStrin...
Nasıl bir dize olarak ham SQL sorgu çı...
Nasıl dize (sadece gerçek uzantısı!)uz...
Bir dize olarak IPv4, IPv6 adreslerini...