EclipseLink - 检测到在执行查询期间从行中读取的主键为空。主键不能包含 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

假定参数正确完整且值正确 - 这是异常接收“主键从行 [ArrayRecord( File.Id => 10228 File.FileName => 000350.pdf)] 在执行查询期间检测到为空。主键不能包含空值。”

可以看到File Entity的主键字段不为空(File.Id => 10228)。在数据库中,table 没有主键的任何字段 null(显然)。

我刚刚在配置文件里设置了参数"eclipselink.jpa.uppercase-column-names" = true,还是不行。

我正在使用 Apache Tomcat 8、Java 8 和 SqlServer 14。Eclipselink 版本是 2.4.0,JPA 版本是 2.0.4。

谢谢。

问题出在数字 select 中,因为实体文件有一个包含两个字段的主键,而 EclipseLink(JPA) 至少希望在 select 结果中包含主键的两个字段关键。

我写的 select 仅回答 table 键的两个字段之一,因此 JPA 无法构建对象文件。

有关信息,此代码引发了异常:

(List<File>) nativeQuery.getResultList();

在转换为对象文件时,JPA 告诉我主键为空,因为他只有两个字段之一。