Pregunta

Estoy tratando de crear un objeto cliente de persistencia de la siguiente manera:

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

El problema que estoy encontrando es que la propiedad "mapa" del SQLMAP no se puede recuperar a pesar de que hay una matriz "_maps" válida dentro del objeto SQLMAP.

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

Al intentar ejecutar la Tabla Crear SQL, la fábrica de instrucciones se queja:

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

De alguna manera, la clase SQLMAP no puede copiar las propiedades del objeto que se le pasó a la propiedad MAP utilizando la clase Objectutil.

No quiero usar un archivo MXML y tampoco quiero usar Spicelib como en el ejemplo.

¿Qué estoy haciendo mal aquí?

¿Fue útil?

Solución

Así que descubrí que en mi caso de alguna manera las llamadas en la clase SQLMAP a los componentes de Spicelib no funcionaban:

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

La matriz de propiedades siempre estaba vacía.

Sin embargo, tomé el código fuente de Persistence Lib y cambié el bucle en el ObjectuTil para repasar las propiedades del objeto directamente:

for (var propertyName:String in source)

Ahora funciona, aunque no estoy muy feliz de haber modificado la clase Objectutil ... tal vez alguien tenga una mejor opinión sobre esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top