gpt4 book ai didi

hibernate - 在 Hibernate 中使用查询映射实体

转载 作者:行者123 更新时间:2023-12-02 22:45:13 24 4
gpt4 key购买 nike

考虑表格

sales (id, seller_id, amount, date)

这是从 sales 生成的 View 使用查询SELECT seller_id, SUM(amount) FROM sales GROUP BY seller_id

total_sales (seller_id, amount)

我想创建一个总销售额实体,但没有 SQL 端的 View 。

该实体将根据查询构建。我发现的最接近的是 this ,但我无法让它发挥作用。

即使我定义了加载器,hibernate 也会查找实体的表,如果找不到它就会给出错误。如果我创建表,它不会从我定义的命名查询中加载实体,Hibernate 会自行生成查询。

有没有办法让@Loader工作或者有其他方法可以将查询映射到实体?

最佳答案

为什么不在查询中使用new

select new TotalSales(seller_id, count(seller_id))
from sales
group by seller_id

您只需编写一个 TotalSales 类,其中的构造函数采用 seller_id 和一个整数。

<小时/>

编辑:使用条件 API 时,您可以使用 AliasToBeanResultTransformer(请参阅 API docs)。它将每个别名复制到同名的属性。

 List list = s.createCriteria(Sales.class)
.setProjection(Projections.projectionList()
.add( Projections.property("id"), "SellerId" )
.add( Projections.rowCount("id"), "Count" ) )
.setResultTransformer(
new AliasToBeanResultTransformer(TotalSales.class) )
.list();

那么您的 TotalSales 需要 SellerIdCount 属性。

关于hibernate - 在 Hibernate 中使用查询映射实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com