实例:一个用户可以有多个订单,一个订单之属于一个用户
(1)实体类:
(2)数据库:
hibernate单项一对多关联:
User类:
public class User {
private Integer id;
private String userName;
private String password;
private Set orderSet = new HashSet<Order>(); .
..... }
Order类:
public class Order {
private Integer id;
private Double price; // 价格
...... }
User.xml:
<!--key:指出在关联类对应的表中的外键的名字。
-->
<set name="orders" cascade="all">
<key column="user_id"/>
<one-to-many class="Order"></one-to-many>
</set>
注:当用list的时候,需要在order表中加入一个额外字段来表示插入顺序。例:在order表中表示插入顺序的字段是orderlist。此时的user.xml为:
<list name="orderList" cascade="delete">
<key column="USERID"/>
<index column="ORDERINDEX"/>
<one-to-many class="Order" />
</list>
当用map时:需要在order表中加入一个额外字段来记录map的key值。例为:orderKey。user.xml为
<map name="orderMap" cascade="delete">
<key column="USERID"/>
<!--type:表示的是map中key的类型,不可以省略-->
<index column="ORDERKEY" type="string"/>
<one-to-many class="Order" />
</map>
hibernate双向一对多联系
order类:
public class Order {
private Integer id;
private Double price; // 价格 private User user;
...... }
order.xml:
<many-to-one name="user" column="USERID" class="User"/>
使用注解方式:
Order端:
//joinColumn是order对应的表中的外建名
@ManyToOne
@JoinColumn(name="USERID")
public User getUser() {
return user; }
User端:
@OneToMany(
mappedBy="user",
targetEntity=Order.class,
cascade=CascadeType.ALL)
public Set getOrderSet() {
return orderSet;
}