[英]jpa + hibernate Query for get records from two tables with join
我需要獲得像這樣的記錄:
toolTypeId, quantity, toolName , onTruck, Damage, loss
2 50 test1 20 25 5
onTruck,損壞,丟失 :-列表中的總記錄
前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;
我正在我的存儲庫文件中嘗試類似的事情:- select count(toolstype.id), toolstype.toolName, quantity FROM toolstype GROUP BY(toolstype.id);
我知道它不正確。請幫助我正確查詢此問題。
謝謝
使用此查詢。 希望對您有幫助。 在這種情況下,您需要使用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
您必須使用此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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.