我需要获得如下记录: -
toolTypeId, quantity, toolName , onTruck, Damage, loss
2 50 test1 20 25 5
onTruck,Damage,loss : - 列表中的总记录
前3个来自toolsType表,最后3个来自userTools。
我的模特课: -
ToolsType.java
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String toolName;
private Long quantity;
UserTools.java
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
private ToolsType toolsType;
private Long loss;
private Long onTruck;
private Long damage;
我在我的Repository文件中尝试类似的东西
: - select count(toolstype.id), toolstype.toolName, quantity FROM toolstype GROUP BY(toolstype.id);
我知道它不正确请帮我正确查询此问题。
谢谢
答案 0 :(得分:0)
使用此查询。希望它会对你有所帮助。在这种情况下,您需要使用alias
。
select count(ttype.id), ttype.toolName, ttype.quantity FROM toolstype as ttype GROUP BY(ttype.id);
更新的查询如下:
select count(ttype.id), ttype.toolName, ttype.quantity, utools.onTruck, utools.damage, utools.loss
FROM toolstype ttype, usertools utools
where ttype.id = utools.id
GROUP BY ttype.toolName, ttype.quantity, utools.onTruck, utools.damage, utools.loss
答案 1 :(得分:0)
您必须使用此JPQL查询:
select tt.id, count(tt.id), tt.toolname, ut.onTruck, ut.damage, ut.loss
from UserTools ut
join ut.toolsType tt
group by tt.id, tt.toolname, ut.onTruck, ut.damage, ut.loss
您需要将select
子句中的所有group by
值放入查询中以对结果进行分组。
更新:
如果您需要结果中的UserTools
值和所有ToolsType
值之和,则查询将为:
select tt.id, count(tt.id), tt.toolname, sum(ut.onTruck), sum(ut.damage), sum(ut.loss)
from ToolsType tt, UserTools ut
where tt.id = ut.toolsType.id
group by tt.id, tt.toolname, ut.onTruck, ut.damage, ut.loss
我还认为UserTools
和ToolType
之间的关系是@ManyToOne
而不是@OneToOne
。