2つのデータベース接続を持つDropWizardプロジェクトがあります:MySqlとOracle(v11)。 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);
}
私のマッパーは、このようになります。マッパーにログステートメントを追加したとき、私はそれが決して呼び出されないことを確認することができました。
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"));
}
}
DAOは、次のコードを経由して自分のアプリケーションのrunメソッドで初期化されている:
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);
}
}
私の接続と間違って何もない検証するために、私は一時的に私のrunメソッドに次のコードを追加しました予期した結果を返します。
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());
}
同じパラメータでmy DAOのgetSkuメソッドを実行するとnullが返されます。
私が間違っていることを誰かに教えてもらえますか、これを引き起こしている原因を突き止めるための対策を指摘できますか?私はそれをデバッグしようとしましたが、私は単に私が見ていることを理解するためにJDBI内部について十分に知りません。