Hibernate连接查询以获取Java中的数据?
我不熟悉Hibernate和Java服务器端。我使用Hibernate连接查询以获取Java中的数据?,java,mysql,hibernate,Java,Mysql,Hibernate,我不熟悉Hibernate和Java服务器端。我使用javax.persistenceannotation在Java中映射了MySQL表。我有两张桌子: 订单头 在这个表中,我有订单号(主键)、订单总值、交货费、订单时间等列。 订单详细信息 在这个表中,我有 订单号、产品代码、价格列 在order\u标题中,订单号是主键 对于每个订单号,在订单详情表中有n个产品号。 如何合并这两个表? 要获得值,例如最终输出 Order_number total_order_value prod
javax.persistence
annotation在Java中映射了MySQL表。我有两张桌子:订单头
在这个表中,我有
订单号(主键)、订单总值、交货费、订单时间等列。
订单详细信息
在这个表中,我有
订单号、产品代码、价格
列
在order\u标题
中,订单号是主键
对于每个订单号,在订单详情表中有n个产品号。
如何合并这两个表?
要获得值,例如最终输出
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_number total_order_value delivery_charge order_time
----------------------------------------------------------------------
25 2550 50 03:20:50
36 350 50 03:20:50
----------------------------------------------------------------------
Order\u 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
}
@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
}
订单详细信息
Order_number product_code price
---------------------------------------
25 235 1500
25 240 1000
36 50 40
36 96 60
36 150 200
订单详情。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
}
@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
---------------------------------------------------------------------------------------
请帮助我解决这个问题。您必须在hibernate中一对多地添加订单标题和订单详细信息之间的关系。您可以通过以下订单标题中的代码来实现这一点。java
@OneToMany(mappedBy = "Order_number", fetch = FetchType.LAZY)
private List<Order_details> orderDetailList;
//add getter and setter methods for orderDetailList.
或者,如果您想编写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");
您不需要这样做,hibernate将为您的应用程序执行此操作。将Order_details.java中的Order_编号的类型更改为Order_标题,并将字段更改为OneToOne关系。查询标题时,obect hibernate将自动为您加入详细信息。您能否详细说明“如何从订单\详细信息表中组合和计算唯一产品值”的含义?在最终输出示例中,如何计算product_值
的值?@SergeyPauk我希望Hibernate查询获得最终输出。清楚,第二个问题如何,如何从最终输出计算product_值(您可以发布SQL查询吗)?我假设这是一个价格的总和,但在这种情况下,36号订单的价格总和应该是200而不是300。@SergeyPauk在输入am类型时输入错误。查询是什么以生成结果集,如最终输出。它显示错误没有为实体指定标识符:model.order_details
您从以上三个选项中使用的选项。?我的意思是标准,HQL或SQL。?谢谢。刚才我也识别了那个。如何在标准中给出where条件。因为有些列有空值,所以它显示了一个错误,比如null值被分配给了基元类型setter的属性
,每个定义为带有@Entity注释的实体的类都需要一个'@Id'或'@EmbeddedId'属性。