2014-11-25 2 views
0

Я пытаюсь создать таблицу что-то в моем классе, используя такой метод:NoSuchMethodError JDBI

void createTab() { 
DBI dbi = new DBI(DBURL, DBUSER, DBPASS); 

BindExamples dao = dbi.open(BindExamples.class); 

dao.createSomethingTable(); 
    dao.close(); 
} 

Мой BindExamples интерфейс:

public interface BindExamples 

{ 
@SqlUpdate("insert into something (id, name) values (:id, :name)") 
void insert(@Bind("id") int id, @Bind("name") String name); 

@SqlUpdate("delete from something where name = :it") 
void deleteByName(@Bind("name") String name); 

@SqlSelect("select text from articles where id = :id") 
String selectText(@Bind("id") int id); 

@SqlUpdate("create table something (id int primary key, name varchar(100))") 
    void createSomethingTable(); 

void close(); 
} 

Результат: Я получил сообщение об ошибке:

Exception in thread "main" java.lang.NoSuchMethodError:java.lang.Object.createSomethingTable()V 
at org.skife.jdbi.v2.sqlobject.CloseInternalDoNotUseThisClass$$EnhancerByCGLIB$$7c60a575.CGLIB$createSomethingTable$8(<generated>) 
at org.skife.jdbi.v2.sqlobject.CloseInternalDoNotUseThisClass$$EnhancerByCGLIB$$7c60a575$$FastClassByCGLIB$$c61ecaca.invoke(<generated>) 
at org.skife.jdbi.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.skife.jdbi.v2.sqlobject.PassThroughHandler.invoke(PassThroughHandler.java:21) 
    at org.skife.jdbi.v2.sqlobject.SqlObject.invoke(SqlObject.java:147) 
    at org.skife.jdbi.v2.sqlobject.SqlObject$1.intercept(SqlObject.java:60) 
    at org.skife.jdbi.v2.sqlobject.CloseInternalDoNotUseThisClass$$EnhancerByCGLIB$$7c60a575.createSomethingTable(<generated>) 
    at DBAccessJDBC.saveObjectAPI(DBAccessJDBC.java:58) 
    at MainMain.main(MainMain.java:7) 

Любые идеи, что я сделал не так? Я пытаюсь к тому же, как и в http://jdbi.codehaus.org/five_minute_intro/

Я использую:

  • 2.48.2 версия библиотеки JDBI
  • затмение
  • MySql

Спасибо за любую помощь!

ответ

0

JDBI сканирует аннотации вашего интерфейса. Используйте аннотацию @SqlQuery.

1

Аннотации @SqlSelect в jdbi. Можете ли вы сказать, из какой библиотеки вы используете эту аннотацию. Я изменил аннотацию на @SqlQuery, он отлично работает. Он будет проверять все методы и основываться на аннотации, которую он будет выделять обработчикам. Сканирование может завершиться неудачей из-за неизвестной аннотации.

Смежные вопросы