2015-11-19 13 views
5

Ho appena aggiornato da Braccio terzo punto a EclipseLink e sono in esecuzione in questo erroreEclipseLink - chiave di query non valido [latestVersionFlag] nell'espressione

Eccezione [EclipseLink-6015] (Eclipse Persistence Services - 2.6.1.v20150916-55dc7c3) : org.eclipse.persistence.exceptions.QueryException Exception Descrizione: Chiave di query non valida [latestVersionFlag] nell'espressione. Query: ReadAllQuery (name = "bookingVersionCollection" referenceClass = BookingVersion)

mio descrittore assomiglia a questo

OneToManyMapping bookingVersionCollectionMapping = new OneToManyMapping(); 
bookingVersionCollectionMapping.setAttributeName("bookingVersionCollection"); 
bookingVersionCollectionMapping.setReferenceClass(BookingVersion.class); 
bookingVersionCollectionMapping.useTransparentCollection(); 
bookingVersionCollectionMapping.useCollectionClass(IndirectList.class); 
bookingVersionCollectionMapping.addAscendingOrdering("bookingVersionID"); 
bookingVersionCollectionMapping.addTargetForeignKeyFieldName("RS_BOOKINGVERSION.RS_BKG_ID", "RS_BOOKING.RS_BKG_ID"); 
bookingVersionCollectionMapping.setSelectionCriteria(bookingVersionCollectionMapping.buildSelectionCriteria() 
    .and(expBuilder.get("latestVersionFlag").equal(ResConstants.FLAG_YES))); 
descriptor.addMapping(bookingVersionCollectionMapping); 

Ho anche una mappatura per la classe BookingVersion che ha il mapping per il campo

DirectToFieldMapping latestVersionFlagMapping = new DirectToFieldMapping(); 
latestVersionFlagMapping.setAttributeName("latestVersionFlag"); 
latestVersionFlagMapping.setFieldName("RS_BOOKINGVERSION.LATESTVERSIONFLAG"); 
descriptor.addMapping(latestVersionFlagMapping); 

E all'interno dell'oggetto Java poco di BookingVersion.java il campo è simile a questo ..

private char latestVersionFlag = ResConstants.FLAG_YES; 

Qualche idea? Questo codice ha funzionato in Toplink, quindi non sono sicuro di cosa sta succedendo.

+0

Quando si aggiunge la prenotazioneVersionCollectionMapping e da dove viene generata l'eccezione? Sto indovinando, ma sembra che l'espressione impostata nel bookingVersionCollectionMapping venga elaborata prima che tutto il resto sia completato e l'ultimaVersionFlagMapping non ha ancora una chiave di query. Potrebbe essere necessario aggiungere la selectCriteria al bookingVersionCollectionMapping utilizzando un descrittore personalizzato, in modo che venga aggiunto dopo che tutto il resto è stato elaborato – Chris

+0

Potresti aggiungere lo stacktrace completo (se lo hai ancora) in modo che i lettori possano confrontarlo con altre domande e problemi di EclipseLink. Questo potrebbe essere discusso su https://bugs.eclipse.org/bugs/show_bug.cgi?id=466581. –

risposta

1

Beh, cambiando

bookingVersionCollectionMapping.setSelectionCriteria(bookingVersionCollectionMapping.buildSelectionCriteria() 
    .and(expBuilder.get("latestVersionFlag").equal(ResConstants.FLAG_YES))); 

a

bookingVersionCollectionMapping.setSelectionCriteria(bookingVersionCollectionMapping.buildSelectionCriteria() 
     .and(expBuilder.getField("RS_BOOKINGVERSION.LATESTVERSIONFLAG").equal(ResConstants.FLAG_YES))); 

sembra funzionare ..... ancora non so perché, ma ho pensato di postare per chiunque altro!

+0

Grazie! Abbiamo aggiornato da 2.5.2 a 2.6.1 eclipselink e abbiamo avuto errori intermittenti con questo errore. L'uso del getField invece del metodo get lo ha risolto. – agradl

Problemi correlati