Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Java 如何将子选择添加到选择_Java_Sql_Hibernate_Jpa_Hibernate Mapping - Fatal编程技术网

Java 如何将子选择添加到选择

Java 如何将子选择添加到选择,java,sql,hibernate,jpa,hibernate-mapping,Java,Sql,Hibernate,Jpa,Hibernate Mapping,我想执行如下查询: 选择Table1.COL1, 表1.2, 选择SUMTable2.COL3 来自表2 其中Table2.UID=Table1.UID 来自表1; 我怎么做? 我通常创建一个Criteria add ProjectionList,只填充COL1和COL2。 我已经创建了一个DetachedCriteria来计算总和 现在,如何将这个分离的标准附加到主标准?我的直觉告诉我——这是某种需要添加到列表中的投影,但我不知道如何添加。此外,不确定分离标准的Table2.COL4=Tabl

我想执行如下查询:

选择Table1.COL1, 表1.2, 选择SUMTable2.COL3 来自表2 其中Table2.UID=Table1.UID 来自表1; 我怎么做? 我通常创建一个Criteria add ProjectionList,只填充COL1和COL2。 我已经创建了一个DetachedCriteria来计算总和

现在,如何将这个分离的标准附加到主标准?我的直觉告诉我——这是某种需要添加到列表中的投影,但我不知道如何添加。此外,不确定分离标准的Table2.COL4=Table1.COL5在哪里工作

此外,我确信这个查询可能以不同的方式编写,例如使用join语句。如果有一种方法可以像这样运行它,那还是很有趣的

分离标准和主要标准 DetachedCriteria DetachedCriteria=DetachedCriteria.forClassTable2.class,table2; 分离标准 .setProjection 投射者 .addProjections.sumtable2.col3,sumCol3 .addRestrictions.eqtable2.uid,表1.uid ; 标准=session.createCriteriaTable1.class,Table1; 标准 .setProjection 投射者 .addProjections.propertyTable1.col1,col1 .addProjections.propertyTable1.col2,col2 ; 实体非常短的版本 @实体 @Tablename=Table1 公共课表1{ @身份证 @Columnname=uid 公共字符串getUid; @Columnname=col1 公共字符串getCol1; @Columnname=col2 公共字符串getCol2; @Columnname=col3 公共字符串getCol3; @Columnname=col4 公共字符串getCol4; @Columnname=col5 公共字符串getCol5; } @实体 @Tablename=Table2 公共课表2{ @身份证 @Columnname=uid 公共字符串getUid; @Columnname=col3 公共大十进制getCol3; @Columnname=col4 公共字符串getCol4; @Columnname=col5 公共字符串getCol5; }
对于上面介绍的相关子查询,您可以使用可以接受任意SQL查询的。然后,您需要获取实体并执行子查询

但是,如果您只需要针对单个业务需求进行此查询,则本机SQL更为优雅

对于派生表查询,例如select from select,JPA和Hibernate都不支持派生表查询,这是一个很好的理由

实体查询JPQL pr条件旨在获取您计划修改的实体


对于派生表投影,本机SQL是一种选择。否则,为什么您认为EntityManager提供createNativeQuery方法?

请告诉我们什么是DetachedCriteria和Projection?它们不是JPA课程。如果使用JPQL,那么您必须告诉人们您拥有哪些实体/字段,因为表在那里没有相关性。为什么不运行SQL语句呢?您的解决方案位于您的解决方案的开始question@LukasEder目前,在我们的系统中,我们确实使用SQL only语句来显示存储在DB中的数据列表,仅用于查看。我正在研究使用纯Java而无需编写查询的可能性。上面的例子只是我们通常遇到的一个非常罕见的例子。