2017-02-20 3 views
0

Я использую mybatis/hikaricp для доступа к базе данных sqlite.Как использовать функцию apiite user api с HikariCP?

Эта база данных использует SQLite пользовательскую функцию, чтобы расширить функциональные возможности базы данных (с помощью обновления триггера)

Используя этот вид функции ип драйвера SQLite JDBC можно следующим образом:

Connection connection = DriverManager.getConnection("jdbc:sqlite:" + databasePath); 
Function.create(connection, "title_sort", new Function() 
{ 
    @Override 
    protected void xFunc() throws SQLException 
    { 
     result(value_text(0)); 
    } 
}); 

Как вы можете видеть , мы должны использовать sqlite drivermanager, который вернет оболочку SQLiteConnection вокруг JDBC4Connection (вокруг JDBC3Connection, которая реализует java.sql.Connection)

Функция Function.create проверяет соединение instan се следующим образом:

if (conn == null || !(conn instanceof SQLiteConnection)) 
{ 
    throw new SQLException("connection must be to an SQLite db"); 
} 

И вот мой вопрос: как я могу использовать этот API с hikaricp?

ответ

2

Как это:

Connection conn = hikariDataSource.getConnection(); 
Function.create(connection.unwrap(SQLiteConnection.class), 
       "title_sort", 
       new Function() { 
        @Override 
        protected void xFunc() throws SQLException { 
         result(value_text(0)); 
        } 
       } 
); 

Ключевой частью является connection.unwrap(SQLiteConnection.class).

+0

Спасибо! Я не пытался это решение, потому что вчера я использовал JPA/Eclipslink, потому что разворот не смог вернуть мне экземпляр SQLiteConnection. Но с HikariCP ваше решение работает. –

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