Получите olap4j.OlapConnection из org.h2.jdbc.JdbcConnection

Есть ли способ получить olap4j.OlapConnection из org.h2.jdbc.JdbcConnection?

Сейчас я пробую это (как показано здесь):

Class.forName("org.h2.Driver");
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/test;", "sa", "");
OlapWrapper wrapper = (OlapWrapper) conn;
OlapConnection olapConn = wrapper.unwrap(OlapConnection.class);

Но я получаю

Исключение в потоке "main" java.lang.ClassCastException: org.h2.jdbc.JdbcConnection не может быть приведен к org.olap4j.OlapWrapper в myprogram.main(Mondrian2H2Test.java:67)

:67 is OlapWrapper wrapper = (OlapWrapper) conn;

ИЗМЕНИТЬ:

Я также пробовал это:

Class.forName("org.h2.Driver");
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/test;", "sa", "");
OlapConnection olapConn = conn.unwrap(OlapConnection.class);

С этим результатом:

Исключение в потоке "основной" java.lang.AbstractMethodError: org.h2.jdbc.JdbcConnection.unwrap(Ljava/lang/Class;)Ljava/lang/Object; в myprogram.main(Mondrian2H2Test.java:46)

:46 is OlapConnection olapConn = conn.unwrap(OlapConnection.class);


person Drahakar    schedule 24.05.2012    source источник


Ответы (1)


Глядя на Javadocs MondrianOlap4jDriver и на список рассылки, код выглядит следующим образом:

import java.sql.Connection;
import java.sql.DriverManager;
import org.olap4j.OlapConnection;

Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
Connection conn = DriverManager.getConnection(
    "jdbc:mondrian:" + 
    "Jdbc=jdbc:h2:~/test; " +
    "JdbcUser=sa; " +
    "JdbcPassword=; " +
    "Catalog=file:/mondrian/demo/FoodMart.xml; " +
    "JdbcDrivers=org.h2.Driver");
OlapConnection olapConn = conn.unwrap(OlapConnection.class);
person Thomas Mueller    schedule 25.05.2012
comment
Мне это кажется правильным. Мондриан определенно может передавать пустые пароли. - person Julian Hyde; 25.05.2012