Saya mendapatkan exception ketika saya menjalankan jdbctemplate untuk mendapatkan id dari meja saya. Pengecualiannya adalah:

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

Saya memiliki skrip seperti di bawah ini:

CREATE TABLE LOGIN(
PERSON_ID SERIAL PRIMARY KEY, 
USERNAME VARCHAR(20) CHECK (USERNAME IS NOT NULL),
PASSWORD VARCHAR(20) CHECK (PASSWORD IS NOT NULL)
);

Dan jdbctemplate code adalah:

@Override
public int getPersonId(UsernamePassword usernamePassword) {
    return jdbcTemplate.queryForObject("SELECT PERSON_ID FROM LOGIN WHERE USERNAME = ? AND PASSWORD = ?", Integer.class,
            usernamePassword.getUser_name(), usernamePassword.getPassword());

}

Saya juga mencoba metode lain yang disediakan jdbctemplate, tetapi saya tidak berhasil. Saya akan menghargai bantuan apa pun. Terima kasih.

0
Yogesh Ghimire 22 Mei 2016, 20:29

1 menjawab

Jawaban Terbaik

queryForObject JdbcTemplate mengharapkan bahwa kueri yang dieksekusi hanya akan mengembalikan satu baris. Jika Anda mendapatkan 0 baris atau lebih dari 1 baris yang akan menghasilkan IncorrectResultSizeDataAccessException.

Saya kira dalam kasus Anda, queryForObject mengembalikan o baris atau lebih dari 1 baris,

Jadi jika Anda tidak ingin menangkap IncorrectResultSizeDataAccessException ini, gunakan metode query saja.

2
shankarsh15 22 Mei 2016, 20:39