nim*_*cap 6 hibernate hql hibernate-mapping
考虑表
sales (id, seller_id, amount, date)
Run Code Online (Sandbox Code Playgroud)
这是一个sales使用查询生成的视图SELECT seller_id, SUM(amount) FROM sales GROUP BY seller_id
total_sales (seller_id, amount)
Run Code Online (Sandbox Code Playgroud)
我想创建一个实体用于总销售但没有sql方面的视图.
该实体将从查询构造.我找到的最接近的是这个,但我无法使其发挥作用.
即使我定义了加载器,hibernate也会查找实体的表,如果找不到它就会出错.如果我创建表,它不会从我定义的命名查询中加载实体,Hibernate会自己生成查询.
有没有办法让@Loader工作,还是有另一种方法可以将查询映射到实体?
Ste*_*ger 18
你为什么不在new查询中使用?
select new TotalSales(seller_id, count(seller_id))
from sales
group by seller_id
Run Code Online (Sandbox Code Playgroud)
您只需使用带有seller_id和整数的构造函数编写一个类TotalSales.
编辑:使用条件API时,您可以使用AliasToBeanResultTransformer(请参阅API文档).它将每个别名复制到同名的属性.
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();
Run Code Online (Sandbox Code Playgroud)
然后你的TotalSales需要SellerId和Count财产.
| 归档时间: |
|
| 查看次数: |
16886 次 |
| 最近记录: |