请注意,UNIOn中的每个SELECt语句必须具有相同的列数。 这些列还必须具有相似的数据类型。另外,每个SELECT语句中的列必须具有相同的顺序。
如果是这样,请向您的查询添加别名:
selectdp.PRODUCTFAMILY as PRODUCTFAMILY,dp.PRODUCTFAMILYDESCR as PRODUCTFAMILYDESCRfrom TABEL1 dd, TABEL2 DPwhere dd.id = 00002and dd.PRODUCTFAMILY is nullunionselectdp.DIVNUMBER as PRODUCTFAMILY,dp.DIVDESCR as PRODUCTFAMILYDESCRfrom TABEL1 dd, TABEL2 DPwhere dd.id = 00002and dd.PRODUCT is not null and dd.PRODUCTFAMILY is not null
您可以通过以下方式使用SQLQuery和AliasToBeanResultTransformer:
session.createSQLQuery(above sql with union).addScalar("PRODUCTFAMILY",StringType.INSTANCE).addScalar("PRODUCTFAMILYDESCR",StringType.INSTANCE).setResultTransformer(new AliasToBeanResultTransformer(PRODUCT.class))PRODUCT必须具有一个空的构造函数和字段访问器。
否则,如果此联合旨在提取具有不同类型的不同字段,则必须分别运行两个查询,第一个结果为addAll()第二个!



