Datanucleus JDO с SQLite - PullRequest
       19

Datanucleus JDO с SQLite

1 голос
/ 13 апреля 2011

Для тестов JUnit в нашем приложении я пытаюсь инициализировать Datanucleus для использования базы данных SQLite.Тем не менее, когда я пытаюсь получить PersistenceManager, происходит сбой при попытке создать таблицу DELETEME******** (я также не до конца понимаю, ПОЧЕМУ ей еще нужна эта таблица).

Похоже, что это не удаетсяво время truncate () из-за некоторой проблемы длины идентификатора.Я пытался настроить всевозможные свойства конфигурации datanucleus безрезультатно.

Может кто-нибудь объяснить мне, почему Datanucleus чувствует необходимость создания этих DELETEME**** таблиц, и что потенциально может вызвать эту ошибку усечения сБаза данных SQLite (org.sqlite.JDBC), а не с MySQL?


Журнал:

Apr 12, 2011 1:30:16 PM org.datanucleus.store.rdbms.table.AbstractTable create
INFO: Creating table DELETEME1302640216142
Apr 12, 2011 1:32:10 PM org.datanucleus.store.rdbms.RDBMSStoreManager <init>
SEVERE: Failed initialising database. Please check that your database JDBC driver is accessible, and the database URL and username/password are correct. Exception : The length argument (=-3) is less than HASH_LENGTH(=4)!
java.lang.IllegalArgumentException: The length argument (=-3) is less than HASH_LENGTH(=4)!

Полная трассировка стека:

java.lang.IllegalArgumentException: The length argument (=-3) is less than HASH_LENGTH(=4)!
    at org.datanucleus.store.mapped.identifier.AbstractIdentifierFactory.truncate(AbstractIdentifierFactory.java:314)
    at org.datanucleus.store.mapped.identifier.AbstractIdentifierFactory.newPrimaryKeyIdentifier(AbstractIdentifierFactory.java:661)
    at org.datanucleus.store.rdbms.key.PrimaryKey.<init>(PrimaryKey.java:37)
    at org.datanucleus.store.rdbms.table.TableImpl.getPrimaryKey(TableImpl.java:128)
    at org.datanucleus.store.rdbms.table.TableImpl.getSQLCreateStatements(TableImpl.java:1264)
    at org.datanucleus.store.rdbms.table.AbstractTable.create(AbstractTable.java:419)
    at org.datanucleus.store.rdbms.RDBMSStoreManager.initialiseSchema(RDBMSStoreManager.java:676)
    at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:350)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:597)
    at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:300)
    at org.datanucleus.ObjectManagerFactoryImpl.initialiseStoreManager(ObjectManagerFactoryImpl.java:227)
    at org.datanucleus.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:591)
    at org.datanucleus.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:293)
    at org.datanucleus.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:189)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960)
    at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166)
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
    at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
...