簡體   English   中英

jpa + hibernate查詢帶有聯接的兩個表中的獲取記錄

[英]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

我還認為UserToolsToolType之間的關系應該是@ManyToOne而不是@OneToOne

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM