簡體   English   中英

EclipseLink-在執行查詢期間從該行讀取的主鍵被檢測為null。 主鍵不得包含null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM