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

Hibernate:从多个表中获取多个表列结果

何昆
2023-03-14

我正在使用hibernate 4和Spring 3。

我有5个表,每个表映射一个实体类。现在,如果我必须从1个表中选择列,我将执行以下操作:

String hql = "from Employee E";
Query query = session.createQuery(hql);
List results = query.list();

此结果中的此值将为EmployeeEntity类型。

或者我也可以使用标准。

现在我的要求是我必须从所有5个表中得到结果。每个表中有1-2列。

早些时候,它是一个1表,所以我得到了一个实体,现在我得到了5个表的结果,所以如何在实体中映射它。

List results1=查询。list();//考虑使用不同的表格选择并获得6列结果。

现在,如何迭代这个结果1。

我希望你明白我的问题。

共有1个答案

穆正祥
2023-03-14

您可以使用查询的结果集变压器:

假设您有来自不同表的4列,例如tab1coltab2coltab3coltab4col

创建一个“POJO”,如下所示

class MyClass
{
 private Integer tablcol;
 private Integer tab2col;
 private Integer tab3col;
 private Integer tab4col;
  //  getter and setters
}

通过以下方法可以变换结果集:

List<MyClass> myClassList=query.setResultTransformer(Transformers.aliasToBean(MyClass.class)).list();

注意:查询应该包含一个结果集(类似于oracle中的游标)。

 类似资料:
  • 问题内容: 我在单个SQL语句中从多个表中提取Sums时遇到问题。 我有三个表tblCases,tblTimesheetEntries和tblInvoices在tblCases和其他两个表之间存在一对多的关系。 我目前正在使用以下SQL语句 但是,这似乎重复了发票金额。例如,如果一个案例只有一张发票,但是说有4个时间表条目,则它将计算出发票金额的4倍作为该表的总和。 如果我将分组取出,然后运行以下

  • 问题内容: 我有dbo.Users表 然后我有dbo.Phones表 然后我有dbo.Relationship表 我如何进行查询返回 这就是我到目前为止所得到的。 问题答案: 在这里,将“关系”表视为“用户”和“电话”表之间的中间人。它与映射表是多对多关系。将您的用户加入到关系中,然后将其加入到您的电话中。 可以这样想: 用户: 您好关系,我的UserId = 1,我对那个UserId有什么电话I

  • 我的数据模型中有以下实体关系。 ERD Hibernate实体: 要求:我想用实体B的连接获取查询实体C,同时也急切地获取实体D。查询完成后,我希望如果我执行,它不应导致hibernate中的N 1查询问题。 我正在尝试以下JPQL查询: 这导致结果重复,因为与实体D交叉连接。我得到的不是一个结果,而是n个结果,其中n是实体D列表的大小。 我该如何避免这种情况?有没有办法在JPQL中不交叉连接地获

  • 我试图从跨多个工作表的考勤中找到员工ID,并将时间戳拉到单个工作表中。 我在Excel中做过类似的事情,我猜可以在谷歌表格中使用谷歌应用脚本完成。 如果有人能引导我使用谷歌表单中的内置或自定义功能,那将非常有帮助。

  • 表 1:发票(inv_id、inv_value、cust_id) 表 2:客户(cust_id、sales_rep) 表 3:成员(Member_id、member_cateogry、member_type、cust_id) 注1:每个客户支付多张发票。(一对多关系)。< br >注2:每个客户为一个或多个会员付费(因此一个客户可能与多个会员相关)。< br >注3:每个成员都有一个类别,可以是1

  • 问题内容: 如果我的查询包含一个类,例如: 然后我迭代它,那里是一个类的对象。 那么如何从包含多个类的查询中获取结果呢?例如: 问题答案: for (Object[] result : query.list()) { User user = (User) result[0]; Group group = (Group) result[1]; }