我试图在Hibernate中执行命名查询。查询在此映射文件中定义:
<?xml version="1.0"?>
<class name="MxePosition" table="MY_TABLE">
<id name="id" column="MY_ID" />
<property name="quantity" />
<property name="instrument" />
</class>
<sql-query name="getPositionsForPortfolio">
<return alias="position" class="com.example.domain.MxePosition"/>
<![CDATA[
SELECT
SUM(LEG_ONE_NOMINAL) AS {position.quantity},
ID_INSTRUMENT AS {position.instrument}
FROM MY_TABLE WHERE SRC_PORTFOLIO= :portfolio GROUP BY ID_INSTRUMENT
]]>
</sql-query>
MxePosition类如下:
public class MxePosition {
private Long id;
private String instrument;
private double quantity;
public String getInstrument() {
return instrument;
}
public void setInstrument(String instrument) {
this.instrument = instrument;
}
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
我试图做的是让命名查询返回由另一列分组的一列的总和。然而,Hibernate抛出了一个错误,我怀疑这是因为查询结果不包含ID列。
18:06:44,728 ERROR JDBCExceptionReporter:101 - Column not found: MY1_1_0_
有办法吗?必须能够在Hibernate中执行包含GROUP BY子句的查询,而不在结果中包含ID。
如果有更好的方法,我愿意接受其他不使用命名查询的建议。
事实上,我找到了一个更好的解决方案(针对我的情况),但这并不适用于所有情况。
将instrument和quantity设置为复合键意味着可以完全去掉ID字段。我将其添加到映射XML中
<composite-id>
<key-property name="portfolio" />
<key-property name="instrument" />
</composite-id>
我会留下公认的答案,因为它在当时有帮助(投资组合栏在我最初的问题中没有出现)。
我认为问题在于你的数据库,而不是hibernate。我怀疑它不支持对别名列使用“分组依据”。
你有没有试过:
FROM MY_TABLE WHERE SRC_PORTFOLIO= :portfolio GROUP BY {position.instrument}
您可以简单地将“随机”ID添加到查询结果集中并使Hibernate满意,即。
SELECT
MAX(YOUR_ID_COLUMN) AS {position.id},
SUM(LEG_ONE_NOMINAL) AS {position.quantity},
ID_INSTRUMENT AS {position.instrument}
FROM MY_TABLE WHERE SRC_PORTFOLIO= :portfolio GROUP BY ID_INSTRUMENT
问题内容: 我对Hibernate Native Query有问题。我有一个选择,它选择数组切片(PostgreSQL数据库)。 问题在于hibernate状态识别以下部分:来自“ SELECT my_array [1:300] …”的“:300”作为命名参数,并且我得到以下异常:尚未设置所有命名参数。 我试图用’:’,’::’逃脱冒号(:),但没有成功。 Hibernate版本是3.2 问题答案
问题内容: 我想要做的是计算子查询返回的行数,本质上如下: 这是我的错误信息: 为什么这不起作用?如果select仅返回一堆具有过滤条件的行,为什么我不能计算行数或返回的行数? 我正在计算拥有的不同员工的数量。按分组。 这是有关我的数据库的一些结构信息,作为查询的一部分。 谢谢! 问题答案: 试试这个 或这个
问题内容: 使用Hibernate时,有什么方法可以在命名查询中指定可选参数(例如,从表单提供搜索参数而并非所有参数都是必需的)?我正在使用本机SQL查询,但该问题可能也适用于命名HQL查询。 我很确定对此的答案是“否”,但是我还没有在文档中找到确切的答案。 问题答案: AFAIK,没有这样的事情,因此您必须为此编写一个动态查询。也许看一下以前的答案,该答案显示了如何在HQL中执行此操作(您可以将
我使用复合和术语聚合来获得基于给定字段的分组结果。我还使用基数聚合来获取聚合桶的总计数。 下面是我发送的请求查询,以获得相应的响应: 请求: 答复: 我使用Kibana检查查询,它对我来说很好。 但是,我不确定如何在我的NEST对象语法中使用这个基数聚合器。 这是我的代码: 我将非常感谢任何帮助。
我正在用PySpark DataFrames分析一些数据。假设我有一个正在聚合的数据帧< code>df: 这将给我: 聚合工作得很好,但我不喜欢新的列名。有没有办法将此列重命名为人类可以从方法中读取的内容?也许更类似于中的操作:
在普通函数调用中,调用中的参数按被调用函数的参数顺序逐个匹配。 命名参数允许您以不同的顺序将参数传递给函数。 语法只是每个参数前面都有一个参数名和一个等号。 尝试以下程序,这是一个使用命名参数显示函数的简单示例。 例子 (Example) object Demo { def main(args: Array[String]) { printInt(b = 5, a = 7);