Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在JPQL请求中使用新语句_Sql_Hibernate_Jpa_Jpql - Fatal编程技术网

Sql 在JPQL请求中使用新语句

Sql 在JPQL请求中使用新语句,sql,hibernate,jpa,jpql,Sql,Hibernate,Jpa,Jpql,我在JPQL查询中使用new,如下所示 选择 ob.property1, 新包装1.CustomObject(项目、尺寸、材料、产品) 来自主表ob 左连接。。。。 应用程序在ob.property1之后抱怨coma是意外标记。似乎无法在select子句中使用带有new的多列。根据您的情况,您可以帮助我吗?您有以下选项: 将值包装在类型安全的Java对象中,该对象将作为查询结果返回 投影类必须在实体查询中完全限定,并且必须定义匹配的构造函数。这里的类不需要映射。它可以是DTO类。如果它确实表示

我在JPQL查询中使用
new
,如下所示

选择
ob.property1,
新包装1.CustomObject(项目、尺寸、材料、产品)
来自主表ob
左连接。。。。
应用程序在
ob.property1
之后抱怨coma是意外标记。似乎无法在select子句中使用带有
new
的多列。根据您的情况,您可以帮助我吗?您有以下选项:

  • 将值包装在类型安全的Java对象中,该对象将作为查询结果返回
  • 投影类必须在实体查询中完全限定,并且必须定义匹配的构造函数。这里的类不需要映射。它可以是DTO类。如果它确实表示一个实体,则结果实例将以新状态返回(非托管!)

    HQL支持附加的“动态实例化”功能

  • 查询可以指定返回标量结果的
    列表
    ,而不是
    对象[]
  • 此查询的结果将是
    列表
    ,而不是
    列表

  • 将标量结果包装在
    映射中
  • 此查询的结果将是
    列表
    ,而不是
    列表
    。地图的关键点由指定给select表达式的别名定义。如果用户未指定别名,则键将是每个特定结果集列(例如0、1、2等)的索引

    select new package1.CustomObject(item, dimension, material, product)
    from MainTable ...
    
    select new list(item, dimension, material, product)
    from MainTable ...
    
    select new map(
      item as iName,
      dimension as iDimension,
      material as iMaterial,
      product as iProduct)
    from MainTable ...