Domanda

Sto cercando di creare un oggetto client di persistenza nel modo seguente:

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

Il problema che sto riscontrando è che la proprietà "mappa" di SQLMAP rimane non recuperabile anche se esiste un array "_maps" valido all'interno dell'oggetto SQLMAP.

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

Quando si tenta di eseguire Crea Table SQL, la fabbrica di istruzione si lamenta:

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

In qualche modo la classe SQLMAP non è in grado di copiare le proprietà dell'oggetto passato ad essa alla proprietà Map usando la classe ObjectUlil.

Non voglio usare un file MXML e non voglio anche usare Spicelib come nell'esempio.

Cosa sto facendo di sbagliato qui?

È stato utile?

Soluzione

Quindi ho capito che nel mio caso in qualche modo le chiamate nella classe SQLMAP ai componenti Spicelib non funzionavano:

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

L'array delle proprietà era sempre vuoto.

Tuttavia, ho preso la persistenza del codice sorgente di Lib e ho modificato il ciclo in Objecutil per ripassare direttamente le proprietà dell'oggetto:

for (var propertyName:String in source)

Ora funziona, anche se non sono davvero felice di aver modificato la classe Objecutil ... forse qualcuno ha una migliore presa su questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top