2 개의 데이터베이스 연결 (하나의 MySql과 Oracle (v11))이있는 DropWizard 프로젝트가 있습니다. MySql 연결 및 쿼리는 정상적으로 작동합니다. 내 Oracle 쿼리에서 데이터를 얻지 못하고 로그에 오류가 없습니다.DropWizard에서 JDBI를 사용하는 간단한 Oracle 쿼리가 결과를 실행/반환하지 않습니다.
내 DOA는 다음과 같습니다
public interface DummyDao {
@SqlQuery(
"select prod_sku, initial_qty, current_qty" +
" from prod_detail" +
" where prod_sku = :skuNumber")
@Mapper(DummyMapper.class)
Dummy getSku(@Bind("skuNumber") String skuNumber);
}
내 매퍼는 다음과 같습니다. 매퍼에 로그 문을 추가하면 호출되지 않는다는 것을 확인할 수있었습니다. DAO를 다음 코드를 통해 내 응용 프로그램의 실행 방법에 초기화되고
public class DummyMapper implements ResultSetMapper<Dummy> {
public Dummy map(int index, ResultSet r, StatementContext ctx)
throws SQLException {
return new Dummy(
r.getString("prod_sku"),
r.getLong("initial_qty"),
r.getLong("current_qty"));
}
}
는 :
내 연결 아무 문제가 없습니다 확인하기 위해public class ProductServiceApplication extends Application<ProductServiceConfiguration> {
DataSource sb_ds;
DBI sb_dbi;
DummyDao dummyDao;
@Override
public void run(
final ProductServiceConfiguration configuration,
final Environment environment) {
sb_ds = configuration.getSbliveDataSourceFactory()
.build(environment.metrics(), "sblive");
sb_dbi = new DBI(sb_ds);
dummyDao = sb_dbi.onDemand(DummyDao.class);
}
}
, 나는 일시적으로 내 실행 방법에 다음 코드를 추가 예상 결과를 반환합니다.
try (Handle h = sb_dbi.open()) {
List<Map<String,Object>> result =
h.select("select initial_qty, current_qty from prod_detail where prod_sku = '10501034520008'");
System.out.println("bootstrap: " + result.toString());
}
동일한 매개 변수로 내 DAO의 getSku 메서드를 실행하면 null이 반환됩니다.
누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 아니면이 문제의 원인을 파악하기 위해 취할 수있는 조치를 가르쳐 줄 수 있습니까? 디버깅을 시도했지만, JDBI 내부에 대해 충분히 알지 못해서 내가보고있는 것을 이해하지 못합니다.