2016-02-28 8 views
1

Я пытаюсь сохранить некоторые данные в своем приложении JavaFX. Мой код не выполняется при попытке создать таблицу в моем классе PersistenceManager:Встраиваемая база данных Sqlite с Ormlite и JavaFX: таблица создания ошибок

private final static String DATABASE_URL = "jdbc:sqlite:my.db"; 
private final static String DATABASE_DRIVER = "org.sqlite.JDBC"; 
// ... 
    Class.forName(DATABASE_DRIVER); 
    DriverManager.getConnection(DATABASE_URL); 
    connectionSource = new JdbcConnectionSource(DATABASE_URL); 
    // here it fails: 
    TableUtils.createTable(connectionSource,MyClass.class); 

Файл my.db фактически создан, но он пуст. При выполнении TableUtils.createTable, это вызывает следующее:

Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) 
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771) 
    ... 43 more 
Caused by: java.lang.AbstractMethodError: com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(Ljava/lang/String;Lcom/j256/ormlite/stmt/StatementBuilder$StatementType;[Lcom/j256/ormlite/field/FieldType;I)Lcom/j256/ormlite/support/CompiledStatement; 
    at com.j256.ormlite.table.TableUtils.doStatements(TableUtils.java:458) 
    at com.j256.ormlite.table.TableUtils.doCreateTable(TableUtils.java:441) 
    at com.j256.ormlite.table.TableUtils.createTable(TableUtils.java:221) 
    at com.j256.ormlite.table.TableUtils.createTable(TableUtils.java:54) 
    at org.lh.mypackage.mysubpackage.PersistenceManager.<init>(PersistenceManager.java:32) 

Мой класс это:

@DatabaseTable(tableName = "myclass") 
public class MyClass { 
    @DatabaseField(id = true) 
    private String nome; 

    @ForeignCollectionField(eager = false) 
    private Collection<MyOtherClass> risposte; 

    protected MyClass() { 
     super(); 
    } 
} 

и MyOtherClass является:

@DatabaseTable(tableName = "myotherclass") 
public class MyOtherClass { 
    @DatabaseField(id = true) 
    private String nome; 

    @DatabaseField(foreign = true) 
    private MyClass scheda; 

    protected MyOtherClass() { 
     super(); 
    } 
} 

Я использую ormlite-core-4.49-SNAPSHOT.jar.

Что я должен исправлять?

+0

Вы также добавили библиотеку ormlite-jdbc? –

+0

Да, я сделал. Такая же версия, как ormlite-core. – Manu

+0

Я подозреваю, что есть больше исключения. Можете ли вы предоставить полное исключение? Последнее вызвано критическим. – Gray

ответ

1

Для меня решение было переключиться на ormlite-core-4.48. Такая же версия для драйвера ormlite-jdbc. Теперь он работает правильно.