hibernate 之 关系映射

来源:互联网 发布:对外汉语教师网络兼职 编辑:程序博客网 时间:2024/05/09 23:46

一对一双向映射

例子是一个husband对应一个wife

@Entitypublic class Husband {private int id;private String name;private Wife wife; //wife@Id@GeneratedValuepublic int getId() {return id;}@OneToOne(cascade=CascadeType.ALL) //@JoinColumn(name="w_id")//默认是wife_idpublic Wife getWife() {return wife;}//省略其它}

@Entitypublic class Wife {    private int id;      private String name;       private Husband husband;    @Id      @GeneratedValue      public int getId() {          return id;      }      @OneToOne(mappedBy="wife")public Husband getHusband() {return husband;}    //省略其它}

双向关系中要设置mappedBy(在少的那方) 不然会产生多余的字段和约束

一对一 双向映射这种形式也可以设计成组件:

/** * @author blog.csdn.net/ljfbest * 组件映射: * 对象关系:一个对象是另一个对象的一部分 * 数据库表:一张表 * annotation:@Embbedable @Embbeded * xml:<component *  * 以下例子:wife是husband的一部分 */@Embedded  //这点public Wife getWife() {return wife;}
wife类:
public class Wife {private String name; //此处name 不能和husband中的一致@Column(name="wife_name")public String getName() {return name;}//省略}



在多对多中需要设置中间表:

    @ManyToMany      // 下面这个注解是用来定义中间表的表名,及字段名-------------------      @JoinTable(name="t_s",          joinColumns={@JoinColumn(name="t_id")},          inverseJoinColumns={@JoinColumn(name="s_id")}      )      public Set<Student> getStudent() {          return student;      }  

多对一是 @ManyToOne

原创粉丝点击