2015-11-19 11 views
5
yılında

Sadece EclipseLink için Toplink yükseltildi ve bu hata içinde çalıştırıyorumEclipseLink - Geçersiz sorgu anahtarı [latestVersionFlag] ifadesi

İstisna [EclipseLink-6015] (Eclipse Sebat Hizmetleri - 2.6.1.v20150916-55dc7c3) : org.eclipse.persistence.exceptions.QueryException Özel Durum Açıklama: İfade içinde geçersiz sorgu anahtarı [latestVersionFlag]. Sorgu: Bu

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

Ben de bu alana

DirectToFieldMapping latestVersionFlagMapping = new DirectToFieldMapping(); 
latestVersionFlagMapping.setAttributeName("latestVersionFlag"); 
latestVersionFlagMapping.setFieldName("RS_BOOKINGVERSION.LATESTVERSIONFLAG"); 
descriptor.addMapping(latestVersionFlagMapping); 
için eşleme vardır BookingVersion sınıfı için bir eşleme gibi ReadAllQuery (name = "bookingVersionCollection" referenceClass = BookingVersion)

My açıklayıcısı görünüyor

Ve bunun içinde yer alan BookingVersion.java'nın Java poco nesnesinin içinde yer alır. Bu alan aşağıdaki gibi gözükür ..

Herhangi bir fikrin var mı? Bu kod Toplink'de çalıştı, bu yüzden neler olduğundan emin değil.

+0

Ne zaman rezervasyonVersionCollectionMapping ekliyorsunuz ve istisna nerede atılıyor? Tahmin ediyorum, ancak rezervasyonVersionCollectionMapping öğesinde ayarlanan ifade, her şey tamamlanmadan önce işlenir ve sonVersionFlagMapping henüz bir sorgu anahtarına sahip değildir. Bir tanımlayıcı özelleştirici kullanarak reservationCenterectionPressing seçimini eklemek gerekebilir, böylece her şey işlendikten sonra eklenecektir – Chris

+0

Okuyucular diğer soruları karşılaştırabilmeniz için tüm stacktrace (eğer hala varsa) ekleyebilir misiniz? ve EclipseLink sorunları. Bu, https://bugs.eclipse.org/bugs/show_bug.cgi?id=466581 adresinde tartışılabilir. –

cevap

1

Eh,

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

için

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

değiştirerek iş gibi görünüyor ..... hala neden emin değilim ama ben başkası için sonrası düşündüm değil!

+0

Teşekkürler! 2.5.2'den 2.6.1'e yükseltildik ve bu hata ile aralıklı arızalar yaşıyorduk. Get yöntemi yerine getField kullanılarak çözüldü. – agradl

İlgili konular