Я пытаюсь сохранить некоторые данные в своем приложении 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
.
Что я должен исправлять?
Вы также добавили библиотеку ormlite-jdbc? –
Да, я сделал. Такая же версия, как ormlite-core. – Manu
Я подозреваю, что есть больше исключения. Можете ли вы предоставить полное исключение? Последнее вызвано критическим. – Gray