当前位置: 首页 > 知识库问答 >
问题:

如何选择不同的表从连接表与Hibernate标准API?

太叔小云
2023-03-14

我正在尝试实现如下查询:

SELECT DISTINCT C.* FROM A
join B on A.some_id = B.some_id  
join C on B.some_id = C.some_id;

使用Hibernate标准API。我需要对整个C表有不同的结果,而不仅仅是其中的某些列。

我试着那样做:

Criteria criteria = createCriteria(C.class, "ct")
                .createCriteria("B", "bt")
                .createCriteria("A", "at")
                .//Some restrictions which are applied to all tables

像这样:

Criteria criteria = createCriteria(A.class, "at")
                .createCriteria("B", "bt")
                .createCriteria("C", "ct")
                .//Some restrictions which are applied to all tables

(不过我看不出有什么不同)。尝试广告结果变压器:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

尝试将所有colum放入ProjectsList,然后:

criteria.setProjection(Projections.distinct(projectionList));

但是该投影只将“不同”关键字添加到列表中的第一列,而不是整个表。

我想要实现的是这样的目标:

criteria.setProjection(Projections.distinct("C.*"));

但我只能在这里添加一列,不能像查询一样使用通配符。

任何帮助都非常感谢。

共有1个答案

申屠无尘
2023-03-14

您应该从表 'C' 中选择列,而不是从表 'A' 中选择列,如下所示。

SELECT distinct (*) FROM C

它可以写在Hibernate标准如下:

Criteria criteria = session.createCriteria(C.class);
criteria  = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
ResultTransformer rt = new DistinctRootEntityResultTransformer();
List list = rt.transformList(criteria.list());
 类似资料:
  • 现在我正在使用Criteria Hibernate查询从员工表中查询所有记录,它工作正常。我需要将员工表与库表联接,其中库。Emp_Id=员工。Emp_id我是否需要从员工表中获取所有记录,并从库表中获取书名和结账日期,作为联接选择查询的一部分。我该怎么做?

  • 问题内容: 我正在寻找一个hibernate标准以获取以下信息: Dokument.class映射到角色roleId Role.class具有一个ContactPerson contactId Contact.class名字姓 我想在Contact类中搜索名字或姓氏,并检索连接的Dokuments列表。 我已经尝试过这样的事情: 我收到错误,无法为类“ Dokument”解析属性“ LastNam

  • 问题内容: 我需要从3个表中获得不同的值。 当我执行此代码时: 我收到一条错误消息,提示我的“城市”一栏不明确。 我也尝试过这个: 有了这段代码,我的表什么都收不到。 让我向您展示我正在尝试做的事的示例: 我需要得到这样的结果 城市的顺序对我来说并不重要,我只需要拥有所有城市,每个城市应该只有一个代表。 任何的想法?我当时想在中使用,但没有连接,所以我不能使用它。 问题答案: 该关键字将返回结果列

  • 我想问一下,是否有人只能从表A中选择值。请参阅下面的hibernate代码 现在,它就像从A、B和C中选择值,而且太多了。 谢谢你吉米

  • 问题内容: 我的SQL Server数据库中有两个表。第一个是,第二个是。两个表中都有一列。 现在,我想从两个表中选择一个特定的值。 这就是我在做的 但是我的查询给出了错误。 问题答案:

  • 我们的表中有以下员工数据,我们需要找到标志为false的所有员工,如果报告人标志为true,即使该标志为false,我们也应该排除经理 样本数据 输出应为 如何使用Hibernate Criteria builder实现上述要求? 在SQL中,这是使用下面的查询实现的