如何为嵌套实体增加Hibernate标准

时间:2018-03-01 01:48:38

标签: java hibernate

这是一个非常倾向的问题。但我需要问一下。 我们如何构建hibernate复杂标准? 我写了两个简单的类,一个类有另一个引用。 这是我的课程

public class CourseEntity extends BaseEntity {

    @OneToOne
    private CourseTypeEntity type;

    @OneToOne
    private CompanyEntity company;
}

public class CourseTypeEntity {

    @Column
    private String code;

    @Column
    private String name;
}

并且正在尝试建立类似这样的标准。

crit = session.createCriteria(CourseEntity.class, "c");
        crit.add(Restrictions.eq("c.id", 1l));
        crit.add(Restrictions.eq("c.type.id", 1l));
        crit.add(Restrictions.eq("c.company.id", 1l));
        crit.add(Restrictions.like("c.company.name", "oracle"));

是获取company.name过滤器的正确方法,每当添加最后一行时,它都会抛出异常。

有人可以帮助解决此问题或其他任何替代方法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

尝试添加别名:

crit = session.createCriteria(CourseEntity.class, "c").createAlias("c.company", "company");
        crit.add(Restrictions.eq("c.id", 1l));
        crit.add(Restrictions.eq("c.type.id", 1l));
        crit.add(Restrictions.eq("company.id", 1l));
        crit.add(Restrictions.like("company.name", "oracle"));