Java JPA中的@OneToMany关系,且不为空

Java JPA中的@OneToMany关系,且不为空,java,hibernate,jpa,playframework,Java,Hibernate,Jpa,Playframework,我需要选择所有与工作流任务关联的文章。 我尝试使用以下JPA查询(icm和Play!框架,JPA,Hibernate): 实体的相关代码为: @Entity public class Article extends TemporalModel { @OneToMany(mappedBy = "article", fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<WorkflowStep> wor

我需要选择所有与工作流任务关联的文章。 我尝试使用以下JPA查询(icm和Play!框架,JPA,Hibernate):

实体的相关代码为:

@Entity
public class Article extends TemporalModel {

    @OneToMany(mappedBy = "article", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    public List<WorkflowStep> workflowSteps;
}

@Entity
public class WorkflowStep extends TemporalModel {

    public WorkflowStepType type;

    @Required
    @ManyToOne
    @JoinColumn(name="article")
    public Article article;
}
@实体
公共类文章扩展了临时模型{
@OneToMany(mappedBy=“article”,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
公开列出工作流程步骤;
}
@实体
公共类工作流步骤扩展了临时模型{
公共工作流StepType类型;
@必需的
@许多酮
@JoinColumn(name=“article”)
公共物品;
}

这样做可能吗?如果可能,我做错了什么?

您必须将实体映射到各自的表,并添加
@Table
注释:

@Entity
@Table(name="ARTICLE")
public class Article extends ....

.....

@Entity
@Table(name="WORKFLOW_STEP")
public class WorkflowStep extends ....

QuerySyntaxException:您的查询类名似乎不正确。
在HQL中,应该使用映射的@Entity的java类名和属性名,而不是实际的表名。

错误消息对我来说完全是个谜。它抱怨没有映射“workflowStep”,小写为W。如果存在实体映射问题,我希望它会抱怨workflowStep大写为W。在这一点上,我不知道JPA实际上有什么问题;我怀疑它不在你发布的内容中。我想我已经知道了。它与短查询有关,就像我写出来的一样,它似乎像预期的那样工作,但需要做更多的测试
@Entity
public class Article extends TemporalModel {

    @OneToMany(mappedBy = "article", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    public List<WorkflowStep> workflowSteps;
}

@Entity
public class WorkflowStep extends TemporalModel {

    public WorkflowStepType type;

    @Required
    @ManyToOne
    @JoinColumn(name="article")
    public Article article;
}
@Entity
@Table(name="ARTICLE")
public class Article extends ....

.....

@Entity
@Table(name="WORKFLOW_STEP")
public class WorkflowStep extends ....