[英]Hibernate Join query to fetch the data in Java?
我是Hibernate和Java服務器端的新手。 我已經使用javax.persistence
注釋在Java中映射了MySQL表。 我有兩個表:
order_header
在這張桌子上
order_number(primary_key),total_order_value,delivery_charge,order_time
列。
order_details
在這張桌子上
order_number,product_code,price
列。
在order_header
, order_number是主鍵。
對於每個order_number , order_details表中有n
個產品。
如何合並這兩個表?
什么是獲得最終輸出等值的查詢
例如 :
訂單表頭
Order_number total_order_value delivery_charge order_time
----------------------------------------------------------------------
25 2550 50 03:20:50
36 350 50 03:20:50
----------------------------------------------------------------------
Order_headers.java
@Entity
@Table(name = "order_headers")
public class Order_headers {
@Id @GeneratedValue
@Column(name = "order_number")
private int order_number;
@Column(name = "total_order_value")
private double order_value;
@Column(name = "delivery_charge")
private String delivery_charge;
@Column(name = "order_time")
private String order_time;
//here getter and setter methods
}
訂單詳細信息
Order_number product_code price
---------------------------------------
25 235 1500
25 240 1000
36 50 40
36 96 60
36 150 200
Order_details.java
@Entity
@Table(name = "order_details")
public class Order_details {
@Column(name = "Order_number")
private int Order_number;
@Column(name = "product_code")
private String product_code;
@Column(name = "price")
private String price;
//here getter and setter methods
}
我不知道如何在Hibernate中編寫組合查詢以獲取最終輸出之類的詳細信息。
最終輸出
Order_number total_order_value product_value delivery_charge order_time
---------------------------------------------------------------------------------------
25 2550 2500 50 03:20:50
36 350 300 50 03:20:50
---------------------------------------------------------------------------------------
請幫我解決這個問題。
您必須在休眠狀態下在Order_headers和Order_details之間一對多地添加關系,您可以通過在Order_headers.java中遵循以下代碼來實現
@OneToMany(mappedBy = "Order_number", fetch = FetchType.LAZY)
private List<Order_details> orderDetailList;
//add getter and setter methods for orderDetailList.
添加此代碼后,您可以編寫條件,例如
Criteria criteria = session.createCriteria(Order_headers.class);
criteria.setFetchMode("Order_details",FetchMode.JOIN);
List<Order_headers> list = criteria.list();
或者你也可以寫HQL
session.createQuery("from Order_headers cont join cont.Order_details where cont.id=1");
或者如果您想編寫SQL查詢,也可以編寫SQL查詢,而無需在Order_headers.java中添加屬性orderDetailList,這里是SQL
session.createSQLQuery("SELECT * FROM Order_headers order JOIN Order_details details ON order.order_number = details.order_number");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.