2012-02-25 84 views
1

我關閉了EclipseLink緩存,因爲我在外部修改數據,不想手動刷新所有內容。顯然,這是關掉緩存persistence.xml中避免對象的身份問題的正確方法是:沒有緩存的EclipseLink QueryException

<properties> 
    <property name="eclipselink.cache.shared.default" value="false"/> 
</properties> 

和這裏的例外:

Exception [EclipseLink-6094] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.QueryException 
Exception Description: The parameter name [patient_id] in the query's selection criteria does not match any parameter name defined in the query. 
Query: ReadAllQuery(name="file:/C:/dev/repsitory/trunk/java/server/myapp-server/myapp-server-ear/target/gfdeploy/au.com.myapp_myapp-server-ear_ear_1.0-SNAPSHOT/myapp-server-ejb-1.0-SNAPSHOT_jar/_myappPU590288694" referenceClass=PatientRecord sql="SELECT active, new_patient, patient_id_external, rank, patient_id, clinic_system_id FROM postgres.myapp.patient_record WHERE (patient_id = ?)") 

我甚至無法理解的異常信息。它正在討論查詢中的參數名稱,但是JDBC參數未被命名。

任何想法如何解決這個問題而無需重新開啓緩存?

回答

0

事實證明,我創建了一個PatientRecord的實例,其中包含一個或兩個分離對象(從PatientRecord的角度來看多對一)。這不是緩存問題,因爲這些對象永遠不會分離。

我先合併了對象,然後才起作用。