在我的项目中执行此代码时:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<tr height="50">
<td style="width: 220px">
<label for="assetGroup">
<span style="color:red">*</span>Asset Group:
</label>
</td>
<td>
<select id="assetgroupSelect" name ='assetgroupSelect'>
<option value="">(choose asset group)</option>
<option value="A"> A </option>
<option value="B"> B </option>
<option value="C"> C </option>
<option value="G"> G </option>
<option value="H"> H </option>
<option value="I"> I </option>
</select><br><br>
<div class="placer">
Current index is :
<div id="idValue"></div>
</div>
</td>
</tr>
我得到以下异常:
com.microsoft.sqlserver.jdbc.SQLServerException:“PRODUCT_TASK.PRODUCT_TASK_ID”列在ORDER BY子句中无效,因为它不包含在聚合函数或GROUP BY子句中。“
我在这里使用两张桌子。
Integer countObj = (Integer) ht.findByCriteria(criteria.setProjection(Projections.rowCount())).get(0);
以Product_task
为主键
{li> product_task_id
以Product_info
为主键
product_info_id
是product_info_id
的外键。
通过执行该查询,我将得到计数。
我在日志中收到了这个SQL查询:
Product_task
我知道如何更改SQL查询(group by子句需要在那里)但我不知道如何修改Hibernate查询以获得结果。
答案 0 :(得分:0)
您只需在Criteria
中使用Projections's .groupProperty() method。
<强> groupProperty 强>
public static PropertyProjection groupProperty(String propertyName)
分组属性值
您的代码将是这样的:
Integer countObj = (Integer) ht.findByCriteria(criteria.setProjection(Projections.rowCount()
.add(Projections.groupProperty("product_task_id"))))
.get(0);