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 の「マップ」プロパティが取得できないことです。

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 クラスを使用してマップ プロパティにコピーできません。

私は 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 に答える