一对多

package cn.pojo;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Set; @Entity //声明这是一个实体类 必写
public class District implements Serializable {
private static final long serialVersionUID = 8009273978191878070L;
//编号
@Id //标识属性 相当于数据库中的主键
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "seq_dis") //strategy设置标识的生成策略
@SequenceGenerator(name = "seq_dis",sequenceName = "seq_dis_id", //声明序列 自动增长唯1 从1开始自增
allocationSize = ,initialValue = )
private Integer id;
//区县名称
@Column(name = "name") //将属性映射到数据库中 填写列名不区分大小写
private String name;
//街道
@OneToMany(cascade = {CascadeType.ALL}) //一对多,不需要指定类型,cascade是为了指定级联操作。
@JoinColumn(name = "district_Id") //另一个表的外键 填写列名 有了@joincolumn注解 就不能有mappedBy属性否则会出兼容问题这个跟hibernate版本有关.我的是5
private Set<Street> streetSet; public Set<Street> getStreetSet() {
return streetSet;
} public void setStreetSet(Set<Street> streetSet) {
this.streetSet = streetSet;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public District(Integer id, String name) {
this.id = id;
this.name = name;
}
public District(){}
}

多对一  

package cn.pojo;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Set; @Entity //声明这是一个实体类 必写
public class Street implements Serializable {
private static final long serialVersionUID = 2465299058773906791L;
//编号
@Id //标识属性
@GeneratedValue(strategy = GenerationType.IDENTITY) //设置生成策略
private Integer id;
//街道名称
@Column(name = "name") //将属性映射到数据库中 填写列名 不区分大小写
private String name;
//所属区县
@ManyToOne //多对一
@JoinColumn(name = "district_Id") //指向另一个表的外键 填写列名
private District district; @OneToMany
@JoinColumn(name = "street_id")
private Set<House> houses; public District getDistrict() {
return district;
} public void setDistrict(District district) {
this.district = district;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Street(){}
}

多对多

  

package entity;

import javax.persistence.*;
import java.util.Objects;
import java.util.Set; @Entity
public class EmployeeEntity {
private long empid;
//员工名
private String empname;
//开发过的项目
private Set<ProjectEntity> projects; @ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name = "proemp" //中间表的名字
,joinColumns ={@JoinColumn(name = "rempid")} //与当前id有关的外键
,inverseJoinColumns = {@JoinColumn(name = "rproid")}) //另一个表有关的外键,也就是跟Project
public Set<ProjectEntity> getProjects() {
return projects;
} public void setProjects(Set<ProjectEntity> projects) {
this.projects = projects;
} @Id
public long getEmpid() {
return empid;
} public void setEmpid(long empid) {
this.empid = empid;
} @Column(name = "EMPNAME")
public String getEmpname() {
return empname;
} public void setEmpname(String empname) {
this.empname = empname;
}
}
package entity;

import javax.persistence.*;
import java.util.Objects;
import java.util.Set; @Entity
public class ProjectEntity {
private long proid;
//项目名称
private String proname;
//工作人员
private Set<EmployeeEntity> employees; @ManyToMany
@JoinTable(name = "proemp" //如上
,joinColumns ={@JoinColumn(name = "rproid")} //如上
,inverseJoinColumns = {@JoinColumn(name = "rempid")}) //如上
public Set<EmployeeEntity> getEmployees() {
return employees;
} public void setEmployees(Set<EmployeeEntity> employees) {
this.employees = employees;
} @Id
@Column(name = "PROID")
public long getProid() {
return proid;
} public void setProid(long proid) {
this.proid = proid;
} @Column(name = "PRONAME")
public String getProname() {
return proname;
} public void setProname(String proname) {
this.proname = proname;
}
}

多对多测试的时候出现了一个问题如下

An AnnotationConfiguration instance is required to use <mapping class="entity.ProjectEntity"/>

 意思是,用了注解了,自然要用注解类生成SessionFactory,刚出现的时候很懵逼,因为说hibernate4以上的版本是不会出现这种问题的,于是找了半天.

最后发现就是这个问题如下

configuration=new AnnotationConfiguration();
//configuration = new Configuration().configure(); 注释这一段加上 上面一段 下面再多点下configure();
//获取session对象
sessionFactory =configuration.configure().buildSessionFactory();

因为自动生成的注解是在get上面的所以就没改了.

使用idea自动生成实体类注解和实体类

没有hibernate配置点击加号自动生成一个

第二步

第三步

确保这个连接成功之后第四步

之后会进入如下界面

最后确定即可

最新文章

  1. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
  2. 解决PowerShell命令行窗口中不显示光标的问题
  3. Rsync+sersync文件实时同步
  4. Oracle数据文件在open状态被删除的恢复记录
  5. SDC(5)&ndash;FPGA系统级同步输入的约束
  6. React学习笔记(二) 组件状态
  7. MYSQL异常和错误机制
  8. URAL 1180. Stone Game (博弈 + 规律)
  9. Oracle 数据导出到PowerDesigner
  10. 基于python的互联网软件测试开发(自动化测试)-全集合
  11. Unity3d中的PlayerPrefs游戏存档API的扩展
  12. [转] KVM scalability and consolidation ratio: cache none vs cache writeback
  13. NPOI 上传Excel功能
  14. python 装饰器(1)
  15. iOS开发-模板方法模式
  16. Gson使用技巧
  17. webstorm添加调试nodejs
  18. ES6 学习笔记之三 函数参数默认值
  19. PO_标准内部请购内部采购单抛转订单模组(流程)
  20. 【转】Linux删除文件未释放空间问题处理

热门文章

  1. 001Angular2环境准备
  2. webAudioAPI
  3. dl +rec
  4. js:JavaScript中的ActiveXObject对象
  5. Linux(Ubuntu) 常用命令
  6. Windows装系统
  7. NODE-windows 下安装nodejs及其配置环境
  8. Hibernate中一对多关联关系中的级联属性
  9. Android——Activity生命周期
  10. Android——HelloWorld