JDO не может отобразить java.lang. Boolean для Apache Derby - PullRequest
1 голос
/ 27 августа 2011

Я впервые использую Eclipse и JDO. У меня проблема при использовании инструмента схемы в Eclipse для генерации DDL.

Одно из полей в классе Java выглядит следующим образом:

@Persistent
@Column(name = "Enabled", jdbcType = "BOOLEAN")
private boolean enabled = true;

Я успешно улучшил класс с помощью Enhancer Tool, но когда я запустил инструмент Schema (с derbyclient.jar в качестве драйвера JDBC), было зарегистрировано следующее сообщение об ошибке:

18: 47: 26,164 (основной) ОШИБКА [DataNucleus.SchemaTool] - исключение было выбрасывается при эксплуатации SchemaTool. Пожалуйста, обратитесь к журналу для Полная информация. Может помочь следующее: тип JDBC BOOLEAN, объявленный для поле "org.company.core.User.enabled" типа java.lang.Boolean нельзя сопоставить для этого хранилища данных. JDBC тип BOOLEAN объявлен для поле "org.company.core.User.enabled" типа java.lang.Boolean нельзя сопоставить для этого хранилища данных. org.datanucleus.exceptions.NucleusException: тип JDBC BOOLEAN объявлено для поля "org.company.core.User.enabled" типа Java java.lang.Boolean нельзя сопоставить для этого хранилища данных. в org.datanucleus.store.rdbms.mapping.RDBMSMappingManager.getDatastoreMappingClass (RDBMSMappingManager.java:329) в org.datanucleus.store.rdbms.mapping.RDBMSMappingManager.createDatastoreMapping (RDBMSMappingManager.java:533) в org.datanucleus.store.mapped.mapping.SingleFieldMapping.prepareDatastoreMapping (SingleFieldMapping.java:55) в org.datanucleus.store.mapped.mapping.SingleFieldMapping.initialize (SingleFieldMapping.java:44) в org.datanucleus.store.mapped.mapping.MappingFactory.createMapping (MappingFactory.java:97) в org.datanucleus.store.mapped.mapping.AbstractMappingManager.getMapping (AbstractMappingManager.java:255) в org.datanucleus.store.rdbms.table.ClassTable.manageMembers (ClassTable.java:571) в org.datanucleus.store.rdbms.table.ClassTable.manageClass (ClassTable.java:451) в org.datanucleus.store.rdbms.table.ClassTable.initializeForClass (ClassTable.java:1111) в org.datanucleus.store.rdbms.table.ClassTable.initialize (ClassTable.java:268) в org.datanucleus.store.rdbms.RDBMSStoreManager $ ClassAdder.initializeClassTables (RDBMSStoreManager.java:2439) в org.datanucleus.store.rdbms.RDBMSStoreManager $ ClassAdder.addClassTablesAndValidate (RDBMSStoreManager.java:2346) в org.datanucleus.store.rdbms.RDBMSStoreManager $ ClassAdder.run (RDBMSStoreManager.java:1996) в org.datanucleus.store.rdbms.AbstractSchemaTransaction.execute (AbstractSchemaTransaction.java:113) в org.datanucleus.store.rdbms.RDBMSStoreManager.createSchema (RDBMSStoreManager.java:3114) в org.datanucleus.store.schema.SchemaTool.createSchema (SchemaTool.java:443) в org.datanucleus.store.schema.SchemaTool.main (SchemaTool.java:378)

Я проверил руководство Apache Derby, база данных поддерживает тип данных BOOLEAN: http://db.apache.org/derby/docs/10.8/ref/rrefsqljBoolean.html

В чем причина ошибки?

Заранее спасибо.

1 Ответ

1 голос
/ 27 августа 2011

DataNucleus отлично работает для сохранения логических полей Java в BOOLEAN jdbcType для меня; используя DataNucleus 3.x и Derby 10.7.1.1.

Журнал DataNucleus ясно показывает, какие типы JDBC на самом деле поддерживаются этим выпуском Derby (то есть то, что Derby заявляет о поддержке через вызовы JDBC - то, что говорится в руководстве, не обязательно совпадает)

...