JPA中的@OneToMany关系,而不是EMPTY

时间:2014-02-28 14:41:35

标签: java hibernate jpa playframework

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

 List<Article> list = find("site.app=? AND workflowSteps IS NOT EMPTY ORDER BY pubDate DESC", app).fetch();

但是这给了傻瓜翼错误:

IllegalArgumentException occured : org.hibernate.hql.ast.QuerySyntaxException: workflowStep is not mapped [from models.Article where site.app=? AND workflowSteps IS NOT EMPTY ORDER BY pubDate DESC]

实体的相关代码是:

@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;
}

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

2 个答案:

答案 0 :(得分:1)

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

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

.....

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

答案 1 :(得分:0)

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