[英]EclipseLink - The primary key read from the row during the execution of the query was detected to be null. Primary keys must not contain null
一個具有在表File的兩個字段中定義的主鍵的實體,這是代碼:
@Id @Column(name = "\\"ID_ORGANIZATION\\"") private java.math.BigInteger idOrganization; @Id @Column(name = "\\"Id\\"") private java.math.BigInteger id;
這是查詢:
"SELECT "Id","FileName" FROM "File" WHERE "Id" IN (SELECT "IdFile" FROM "DocumentFile" WHERE "IdDocument"=? AND ID_ORGANIZATION=?) AND ID_ORGANIZATION=? ORDER BY "Id""
假定參數正確且帶有正確的值-這是收到的異常“在執行查詢期間從行[ArrayRecord(File.Id => 10228 File.FileName => 000350.pdf)中讀取的主鍵”檢測到為空。主鍵不能包含空。”
您可以看到“文件實體”的主鍵字段不為空(File.Id => 10228)。 在數據庫中,表沒有主鍵為null的任何字段(很明顯)。
我只是嘗試在配置文件中設置參數“ eclipselink.jpa.uppercase-column-names” = true,但這仍然無法正常工作。
我正在使用Apache Tomcat 8,Java 8和SqlServer14。Eclipselink版本是2.4.0,JPA版本是2.0.4。
謝謝。
問題在於編號的選擇,因為實體文件具有包含兩個字段的主鍵,而EclipseLink(JPA)至少希望在選擇結果中包含主鍵的兩個字段。
我寫的選擇只回答了鍵的兩個字段之一,因此JPA無法構建對象File。
對於信息,此代碼引發了異常:
(List<File>) nativeQuery.getResultList();
在對對象File JPA的強制轉換中,我說主鍵為null,因為他只有兩個字段之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.