Невозможно создать SqlMap для PersistenceClient с Cairngorm Persistence Library - PullRequest
0 голосов
/ 15 января 2012

Я пытаюсь создать постоянный клиентский объект следующим образом:

var create:Create = new Create();
create.sql = "CREATE TABLE IF NOT EXISTS REPOFILE( REPOFILEID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, CHECKSUM TEXT, BYTES INTEGER, CREATED INTEGER, UPDATED INTEGER, ISDIRECTORY INTEGER )";

var sqlMap:SqlMap = new SqlMap( { createRepoFileTable : create } );

connectionManager = new ConnectionManagerFactory().createConnectionManager();
persistenceClient = new PersistenceClient( sqlMap, connectionManager );

Проблема, с которой я сталкиваюсь, состоит в том, что свойство "map" sqlmap остается недоступным, даже если внутри объекта sqlmap есть действительный массив "_maps".

maps    [] (@b812d09)   
    [0] Object (@b103d61)   
        createRepoFileTable com.adobe.cairngorm.persistence.api.grammar.Create (@b103a91)       
    length  1   

при попытке выполнить создание таблицы sql фабрика операторов жалуется:

Error: SQLERROR0014: Statement 'createRepoFileTable' not found in SQL map

каким-то образом класс sqlmap не может скопировать свойства объекта, переданного ему, в свойство карты с помощью класса ObjectUtil.

Я не хочу использовать mxml-файл и не хочу использовать spicelib, как в примере.

что я здесь не так делаю?

1 Ответ

0 голосов
/ 15 января 2012

поэтому я понял, что в моем случае вызовы в классе SqlMap для компонентов spicelib не сработали:

var classInfo:ClassInfo=ClassInfo.forInstance(source);
var properties:Array=classInfo.getProperties();

массив свойств всегда был пустым.

однако, я взял исходный код персистентной библиотеки и изменил цикл в ObjectUtil для непосредственного просмотра свойств объекта:

for (var propertyName:String in source)

теперь это работает, хотя я не очень рад, что изменил класс ObjectUtil ... возможно, у кого-то есть лучший подход к этому.

...