1

我正在使用休眠编写一个条件查询。我有一个 DTO 对象,我必须使用它的字段生成一个查询。当我创建这样的析取时,一切似乎都很好:

Criteria c = s.createCriteria(Item.class);
        c.add(Restrictions.disjunction()
                .add(Restrictions.like("buyer", dto.getUser()))
                .add(Restrictions.like("rndEngineer", dto.getUser()))
                .add(Restrictions.like("logistics", dto.getUser()))
                .add(Restrictions.like("qaEngineer", dto.getUser()))
        );

但是,如果我在查询中添加别名以便能够执行此操作:

Criteria c = s.createCriteria(Item.class);
        c.createAlias("wiEngineer", "we");
        c.add(Restrictions.disjunction()
                .add(Restrictions.like("buyer", dto.getUser()))
                .add(Restrictions.like("rndEngineer", dto.getUser()))
                .add(Restrictions.like("logistics", dto.getUser()))
                .add(Restrictions.like("qaEngineer", dto.getUser()))
                .add(Restrictions.like("we.sid", dto.getUser()))
        );

where 子句很好,但我的结果集缺少一些元素。我认为 Hibernate inner 在我的项目上加入了我们。我可以让 Hibernate 以某种方式加入我的别名吗?我用谷歌搜索但无济于事。

4

1 回答 1

1

Javadoc来救援:

条件 createAlias(String associationPath, String alias, int joinType) 抛出 HibernateException

使用指定的连接类型加入关联,为加入的关联分配别名。

joinType 应该是 CriteriaSpecification.INNER_JOIN(默认)、CriteriaSpecification.FULL_JOIN 或 CriteriaSpecification.LEFT_JOIN 之一。

既然有 javadoc 和 Hibernate 参考文档可用,为什么还要使用 Google?

于 2012-05-02T12:42:53.217 回答