当前位置: 首页 > 面试题库 >

如何返回特定类型的列表而不是列表 在休眠状态?

马阳晖
2023-03-14
问题内容

我有课程树:

classA {  
      classB b;  
      classC c;
      .....
}

我有这样的HQL查询:

SELECT a.field1, b.field2, c.field3, c.field4
FROM a LEFT OUTER JOIN b ON a.id = b.fk
       LEFT OUTER JOIN c ON b.id = c.fk

此查询返回List<Object[]>

是否可以将返回的数据强制转换为以下类:

classD {
    Type1 fiedl1;
    Type2 field2;
    Type3 field3;
}

那么Hibernate可以进行铸造吗?还是我需要手动进行所有铸造?


问题答案:

JPA查询中有不同类型的选择。 您当前正在使用Array作为返回类型,您需要的是Construct返回类型。 这是实现此目的的方法:

String queryStr =
    "select NEW package.YourDefinedCustomClass(
     a.field1, b.field2, c.field3, c.field4) from a left outer join b 
     on a.id=b.fk left outer join c on b.id=c.fk";

TypedQuery<YourDefinedCustomClass> query =
    em.createQuery(queryStr, YourDefinedCustomClass.class);

List<YourDefinedCustomClass> results = query.getResultList();

基本上有两件事:

  1. 自定义类必须是您的结果返回类型
  2. 自定义类必须具有一个构造函数,该构造函数采用您在查询字符串中定义的结果值。

阅读有关JPA2查询中选择的更多信息。



 类似资料:
  • 我试图访问MyModelClass上的getter方法,但我的代码返回

  • 问题内容: hibernate命名查询为数据类型为NUMBER的列返回BigDecimal。 在客户端,我希望col1的数据类型很长(原始),我这样做: 要么 在两种情况下,我得到: 我怎样才能解决这个问题?我怀疑,混叠有问题吗? 问题答案: 默认情况下,Oracle NUMBER映射到Hibernate中的BigDecimal。尝试将类型设置为BigDecimal。

  • 问题内容: 我似乎在Hibernate中映射列表时遇到问题。在我们的项目中有一类用含有类与含有。 Hibernate 是否可以使用注释进行映射?我的意思是,因为它没有注释? 问候 问题答案: 用途: 资料来源: 7.2.3。基本类型和可嵌入对象的集合

  • 问题内容: 这是对该问题的更多甚至更好的描述: 我做一个简单的选择查询。返回列表包含确切的记录/对象数,就好像我在数据库中进行相同的查询一样,但是问题在于所有对象都是相同/相同的。 例如,这是数据库中的结果(我删除了空值): 26801 01-JAN-00 7 31-DEC-99 7 Obere Kirchstr。26 CH 8304 Walliselln 26801 01-JAN-00 2 31

  • 我想使用此函数返回s的列表,但当以这种方式设置时,我会收到未选中的分配警告,因为返回的列表未指定包含s。这会导致生成失败。 尝试在返回语句中转换,但随后我得到一个未检查的转换警告 尝试指定列表类型时声明,但然后我还必须指定响应类型参数(-

  • 我正在对地图执行firestore查询 没有人工作过,任何帮助都是感激的 谢谢你抽出时间