hibernate - 一對多配置
阿新 • • 發佈:2020-11-22
說明圖
使用者表結構(一方)
訂單表結構(多方)
使用者表(一方)對應的javaBean
package com.web.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; public class User implements Serializable { private String uid; private String username; private String password; private String name;注: 這裡的Set集合需要手動初始化,並且提供get set方法 訂單表(多方)對應的JavaBeanprivate String email; private Long telephone; private String birthday; private String sex; private Integer state; private Integer code; //相對於訂單表來說,使用者表屬於一方 //一個使用者可以擁有多個訂單 //所以使用者這邊配置為Set集合(一個使用者裝多個訂單) //注:這裡的Set集合需要手動初始化 private Set<Orders> orderList = new HashSet<>();public User() { } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Long getTelephone() { return telephone; } public void setTelephone(Long telephone) { this.telephone = telephone; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public Set<Orders> getOrderList() { return orderList; } public void setOrderList(Set<Orders> orderList) { this.orderList = orderList; } }
package com.web.entity; import java.io.Serializable; import java.util.*; //對於使用者來說 訂單屬於一對多 中的 多方 public class Orders implements Serializable { private String oid; private Date ordertime; private Double total; private Integer state = 0; private String address; private String name; private String telephone; //相對於使用者表來說,訂單表屬於多方 //多個訂單可以被一個使用者擁有 //所以訂單這邊配置為使用者物件 //注:這裡的物件不需要例項化 private User user; public String getOid() { return oid; } public void setOid(String oid) { this.oid = oid; } public Date getOrdertime() { return ordertime; } public void setOrdertime(Date ordertime) { this.ordertime = ordertime; } public Double getTotal() { return total; } public void setTotal(Double total) { this.total = total; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Set<OrderItem> getOrderItems() { return orderItems; } public void setOrderItems(Set<OrderItem> orderItems) { this.orderItems = orderItems; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }注: 這裡的物件不需要例項化,同樣需要提供get set方法 使用者對應的配置檔案(一方)
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.web.entity.User" table="user"> <id name="uid" column="uid"> <generator class="uuid"></generator> </id> <property name="username" column="username"></property> <property name="password" column="password"></property> <property name="name" column="name"></property> <property name="email" column="email"></property> <property name="telephone" column="telephone"></property> <property name="birthday" column="birthday"></property> <property name="sex" column="sex"></property> <property name="state" column="state"></property> <property name="code" column="code"></property> <!-- set標籤:配置集合 name屬性:表示javaBean中集合的名稱 cascade屬性:級聯操作,具體檢視《級聯操作 放棄維護外來鍵》 --> <set name="orderList" cascade="save-update"> <!-- key標籤:配置外來鍵 column屬性:外來鍵的欄位[由多方表(orders)提供] --> <key column="oid"></key> <!-- one-to-many標籤:配置多方javaBean檔案位置,操作配置 class屬性:外來鍵表的全路徑 --> <one-to-many class="com.web.entity.Orders" ></one-to-many> </set> </class> </hibernate-mapping>訂單對應的配置檔案(多方)
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.web.entity.Orders" table="orders"> <id name="oid" column="oid"> <generator class="uuid"></generator> </id> <property name="ordertime" column="ordertime"></property> <property name="total" column="total"></property> <property name="state" column="state"></property> <property name="address" column="address"></property> <property name="name" column="name"></property> <property name="telephone" column="telephone"></property> <!-- many-to-one標籤:配置一方的javaBean檔案位置,操作配置 name屬性: 當前javaBean中的屬性 class屬性:屬性的全路徑名 column屬性:外來鍵的欄位 cascade屬性:級聯操作,具體檢視《級聯操作 放棄維護外來鍵》 --> <many-to-one name="user" class="com.web.entity.User" column="uid" cascade="save-update"></many-to-one> </class> </hibernate-mapping>說明圖 使用者表結構(一方) 訂單表結構(多方) 使用者表(一方)對應的javaBean package com.web.entity; import java.io.Serializable; import java.util.HashSet; import java.util.Set; public class User implements Serializable { private String uid; private String username; private String password; private String name; private String email; private Long telephone; private String birthday; private String sex; private Integer state; private Integer code; //相對於訂單表來說,使用者表屬於一方 //一個使用者可以擁有多個訂單 //所以使用者這邊配置為Set集合(一個使用者裝多個訂單) //注:這裡的Set集合需要手動初始化 private Set<Orders> orderList = new HashSet<>(); public User() { } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Long getTelephone() { return telephone; } public void setTelephone(Long telephone) { this.telephone = telephone; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public Set<Orders> getOrderList() { return orderList; } public void setOrderList(Set<Orders> orderList) { this.orderList = orderList; } } 注: 這裡的Set集合需要手動初始化,並且提供get set方法 訂單表(多方)對應的javaBean package com.web.entity; import java.io.Serializable; import java.util.*; //對於使用者來說 訂單屬於一對多 中的 多方 public class Orders implements Serializable { private String oid; private Date ordertime; private Double total; private Integer state = 0; private String address; private String name; private String telephone; //相對於使用者表來說,訂單表屬於多方 //多個訂單可以被一個使用者擁有 //所以訂單這邊配置為使用者物件 //注:這裡的物件不需要例項化 private User user; public String getOid() { return oid; } public void setOid(String oid) { this.oid = oid; } public Date getOrdertime() { return ordertime; } public void setOrdertime(Date ordertime) { this.ordertime = ordertime; } public Double getTotal() { return total; } public void setTotal(Double total) { this.total = total; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Set<OrderItem> getOrderItems() { return orderItems; } public void setOrderItems(Set<OrderItem> orderItems) { this.orderItems = orderItems; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } 注: 這裡的物件不需要例項化,同樣需要提供get set方法 使用者對應的配置檔案(一方) <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.web.entity.User" table="user"> <id name="uid" column="uid"> <generator class="uuid"></generator> </id> <property name="username" column="username"></property> <property name="password" column="password"></property> <property name="name" column="name"></property> <property name="email" column="email"></property> <property name="telephone" column="telephone"></property> <property name="birthday" column="birthday"></property> <property name="sex" column="sex"></property> <property name="state" column="state"></property> <property name="code" column="code"></property> <!-- set標籤:配置集合 name屬性:表示javaBean中集合的名稱 cascade屬性:級聯操作,具體檢視《級聯操作 放棄維護外來鍵》 --> <set name="orderList" cascade="save-update"> <!-- key標籤:配置外來鍵 column屬性:外來鍵的欄位[由多方表(orders)提供] --> <key column="oid"></key> <!-- one-to-many標籤:配置多方javaBean檔案位置,操作配置 class屬性:外來鍵表的全路徑 --> <one-to-many class="com.web.entity.Orders" ></one-to-many> </set> </class> </hibernate-mapping> 訂單對應的配置檔案(多方) <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.web.entity.Orders" table="orders"> <id name="oid" column="oid"> <generator class="uuid"></generator> </id> <property name="ordertime" column="ordertime"></property> <property name="total" column="total"></property> <property name="state" column="state"></property> <property name="address" column="address"></property> <property name="name" column="name"></property> <property name="telephone" column="telephone"></property> <!-- many-to-one標籤:配置一方的javaBean檔案位置,操作配置 name屬性: 當前javaBean中的屬性 class屬性:屬性的全路徑名 column屬性:外來鍵的欄位 cascade屬性:級聯操作,具體檢視《級聯操作 放棄維護外來鍵》 --> <many-to-one name="user" class="com.web.entity.User" column="uid" cascade="save-update"></many-to-one> </class> </hibernate-mapping>