我正在尝试以下列方式创建持久性客户端对象:
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。
我在这里做错了什么?
答案 0 :(得分:0)
所以我发现在我的情况下,不知何故SqlMap类中对spicelib组件的调用不起作用:
var classInfo:ClassInfo=ClassInfo.forInstance(source);
var properties:Array=classInfo.getProperties();
属性数组始终为空。
但是,我使用了持久性lib的源代码并更改了ObjectUtil中的循环以直接检查对象的属性:
for (var propertyName:String in source)
现在它可以工作了,虽然我修改ObjectUtil类并不是很高兴...也许有人对此有了更好的看法。