【发布时间】:2023-03-05 05:17:01
【问题描述】:
我有下表:
create table INTERNATIONALIZATION (
ID number not null unique,
LANG char(2) not null,
EXT_ID number not null,
EXT_COLUMN char(32) not null,
EXT_NAME char(32) not null,
TRANS_VAL nvarchar2(512) not null
);
以下代码旨在从中检索一个且仅一个结果(我 100% 确定该记录存在)。
public Optional<String> getTranslation(long idSkill, Locale lang, String extColumn, String extName) {
try {
return Optional.of(jdbcTemplate.queryForObject("select TRANS_VAL from INTERNATIONALIZATION where ext_id = ? and lang = ? and ext_column = ? and ext_name = ?", String.class, idSkill, lang.toLanguageTag(), extColumn, extName));
} catch (IncorrectResultSizeDataAccessException ex) {
return Optional.empty();
}
}
问题是当我总是得到Optional.empty() 时,IncorrectResultSizeDataAccessException 被抛出,因为没有找到记录。
当我在 Oracle SQL Developer 中执行这个 sql 查询时,我得到了正确的结果。
是什么导致了这个问题?是否与nvarchar2 类型的所需列有关?
【问题讨论】:
标签: java oracle spring-jdbc jdbctemplate nvarchar