JPA警告:"没有映射与状态字段路径't.progress'相关联"

Bob*_*Bob 6 jpa eclipselink jpql

我正在使用JPA(EclipseLink 2.4.1)和一个包含命名查询的映射文件.Eclipse在我的映射文件中向我显示以下警告消息:

No mapping is associated with the state field path 't.progress'.
Run Code Online (Sandbox Code Playgroud)

警告属于该类型JPA Problem.我的named-queries.xml文件中的相应行看起来像这样:

<named-query name="FinishedTasks">
    <query><![CDATA[SELECT t FROM Task t WHERE t.progress = 100]]></query>
</named-query>
Run Code Online (Sandbox Code Playgroud)

但是,查询在执行时运行正常,因此在运行时没有警告.

这是文件的Task.java样子(摘录):

@Entity
public class Task extends Issue {
    private Integer progress = 0;
    public Integer getProgress() {
        return progress;
    }

    public void setProgress(final Integer progress) {
        this.progress = progress;
    }
}
Run Code Online (Sandbox Code Playgroud)

Issue.java 看起来像这样(摘录):

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Issue implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    public long getId() {
        return id;
    }
    public void setId(final long id) {
        this.id = id;
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有关于使用Issue的查询的警告.

所以我的问题是,如何摆脱警告?警告是否有一些我不知道的含义(如上所述,查询运行正常).

Gle*_*est 4

没有映射与状态字段路径“t.progress”关联

我相信这完全是由于 Eclipse JPA 详细信息视图(orm.xml编辑器)造成的,与 EclipseLink 或 JPA 一般无关。该警告提醒您命名查询正在使用未在映射文件中映射的t.progressJPA 查询路径 ( ) 。View/xml 编辑器不会分析 java 类的元数据,因此不知道它是否是通过 JPA 注释映射的

即该工具正在为您做最好的工作,但它可能会受到其技术/范围的限制。

解决方案:

  • 理解消息的含义,手动确保通过 JPA 注释解决警告(或者如果确实必须,请将适当的实体映射插入到实体映射 XML 文件中),然后继续...

:^)