簡體   English   中英

Hibernate Join查詢來獲取Java中的數據?

[英]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_headerorder_number是主鍵。

對於每個order_numberorder_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.

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