无法使用Cairngorm持久性库为PersistenceClient创建SqlMap

时间:2012-01-14 20:09:17

标签: sql actionscript-3 air persistence cairngorm

我正在尝试以下列方式创建持久性客户端对象:

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 );

我遇到的问题是,即使sqlmap对象中有一个有效的“_maps”数组,sqlmap的“map”属性仍然无法检索。

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

当尝试执行create table sql时,语句工厂会抱怨:

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

不知何故,sqlmap类无法使用ObjectUtil类将传递给它的对象的属性复制到map属性。

我不想使用mxml文件,我也不想像示例中那样使用spicelib。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

所以我发现在我的情况下,不知何故SqlMap类中对spicelib组件的调用不起作用:

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

属性数组始终为空。

但是,我使用了持久性lib的源代码并更改了ObjectUtil中的循环以直接检查对象的属性:

for (var propertyName:String in source)

现在它可以工作了,虽然我修改ObjectUtil类并不是很高兴...也许有人对此有了更好的看法。