Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate连接查询以获取Java中的数据?_Java_Mysql_Hibernate - Fatal编程技术网

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

我不熟悉Hibernate和Java服务器端。我使用
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'属性。