0

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

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   

尝试执行创建表 sql 时,语句工厂抱怨:

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

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

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

我在这里做错了什么?

4

1 回答 1

0

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

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

属性数组始终为空。

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

for (var propertyName:String in source)

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

于 2012-01-15T13:12:28.473 回答