用hibernate创建一个学生-成绩的关联查询

J2EE 码拜 9年前 (2016-03-13) 927次浏览
用hibernate创建一个学生-成绩的关联查询
1、要一个映射文件
2、Java源代码
3、关系:一对多和多对一
PS:谢谢各位的帮忙,期末考试就靠哪位好心的高手,帮帮忙啦
解决方案

30

package com.atguigu.hibernate.entities.n21.both;
import java.util.HashSet;
import java.util.Set;
public class Customer {
private Integer customerId;
private String customerName;
private Set<Order> orders = new HashSet<>();
public Integer getCustomerId() {
return customerId;
}
public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public Set<Order> getOrders() {
return orders;
}
public void setOrders(Set<Order> orders) {
this.orders = orders;
}
}
<?xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
<hibernate-mapping package=”com.atguigu.hibernate.entities.n21.both”>

<class name=”Customer” table=”CUSTOMERS”>

<id name=”customerId” type=”java.lang.Integer”>
<column name=”CUSTOMER_ID” />
<generator class=”native” />
</id>

<property name=”customerName” type=”java.lang.String”>
<column name=”CUSTOMER_NAME” />
</property>

<!– 映射 1 对多的那个集合属性 –>
<!– set: 映射 set 类型的属性, table: set 中的元素对应的记录放在哪一个数据表中. 该值需要和多对一的多的那个表的名字一致 –>
<!– inverse: 指定由哪一方来维护关联关系. 通常设置为 true, 以指定由多的一端来维护关联关系 –>
<!– cascade 设定级联操作. 开发时不建议设定该属性. 建议使用手工的方式来处理 –>
<!– order-by 在查询时对集合中的元素进行排序, order-by 中使用的是表的字段名, 而不是持久化类的属性名  –>
<set name=”orders” table=”ORDERS” inverse=”true” order-by=”ORDER_NAME DESC”>
<!– 执行多的表中的外键列的名字 –>
<key column=”CUSTOMER_ID”></key>
<!– 指定映射类型 –>
<one-to-many class=”Order”/>
</set>

</class>

</hibernate-mapping>
package com.atguigu.hibernate.entities.n21.both;
public class Order {
private Integer orderId;
private String orderName;
private Customer customer;
public Integer getOrderId() {
return orderId;
}
public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
<?xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
<hibernate-mapping package=”com.atguigu.hibernate.entities.n21.both”>
<class name=”Order” table=”ORDERS”>
<id name=”orderId” type=”java.lang.Integer”>
<column name=”ORDER_ID” />
<generator class=”native” />
</id>

<property name=”orderName” type=”java.lang.String”>
<column name=”ORDER_NAME” />
</property>

<!–
映射多对一的关联关系。 使用 many-to-one 来映射多对一的关联关系
name: 多这一端关联的一那一端的属性的名字
class: 一那一端的属性对应的类名
column: 一那一端在多的一端对应的数据表中的外键的名字
–>
<many-to-one name=”customer” class=”Customer” column=”CUSTOMER_ID”></many-to-one>
</class>
</hibernate-mapping>

10

这是customer 和order 的关系建表
跟学生跟成绩的关系一样
你把customer 改成学生
order 改成成绩

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用hibernate创建一个学生-成绩的关联查询
喜欢 (0)
[1034331897@qq.com]
分享 (0)