HIbernate连接一个表,它在当前连接之外

时间:2015-08-06 11:11:49

标签: mysql hibernate join

我只是想加入三张桌子。 这些是我的表格:

Account
acc_id

Account 2 Project
acc_id, proj_id

Project
proj_id

Topic
t_id, proj_id

我的课程

 Topic //(with a member Project project)
 Project
 Account //(with a member List<Project> assignedProjects)

现在我添加了一个查询来获取所有assignedProjects的标题,这可以正常工作。我使用createCriteriacreateAlias来加入。

private void setProjectCriteria(Criteria criteria, AccountFilter accountFilter) {
    /*
    criteria.createCriteria("assignedProjects").createAlias("sponsor", "s").add(
            Restrictions.or(
                    Restrictions.like("title", "%" + accountFilter.getProject().getTitle() + "%"),
                    Restrictions.like("s.title", "%" + accountFilter.getProject().getTitle() + "%")));
    */

    Criterion criterion = null;
    for(Project project : accountFilter.getProjects()) {
        Criterion title = Restrictions.or(Restrictions.like("title", "%" + project.getTitle() + "%"),
                Restrictions.like("s.title", "%" + project.getTitle() + "%"));
                //Restrictions.like("t.title", "%" + project.getTitle() + "%"));
        if(criterion == null)
            criterion = title;
        criterion = Restrictions.or(criterion, title);
    }

    criteria.createCriteria("assignedProjects").createCriteria("topic").createAlias("sponsor", "s").add(criterion);
}

但是,现在,我想加入项目主题。每个项目只有一个主题。 所以从项目的角度来看,它是一对一的。

我尝试添加

criteria.createAlias("topic", "t")

但是这给了我一个错误,说类Project没有成员主题(这是正确的,因为不是Project有成员主题,但是Topic有成员项目)。如何将该条件添加到我现有的联接中?

0 个答案:

没有答案