ejb笔记一 one to one
来源:互联网 发布:网络打电话软件哪个好 编辑:程序博客网 时间:2024/05/17 12:51
一对一关系需要在关系维护端(owner side)的@OneToOne注释中定义mappdBy属性,在关系被维护端(inverse side)建立外键列指向关系关系维护端的主键列。
关系被维护端 IDCard.java代码如下
@SuppressWarnings("serial")
@Entity
@Table(name = "IDCard")
public class IDCard implements Serializable...{
private Integer id;
private String cardno;
private Person person;
public IDCard() ...{
}
public IDCard(String cardno) ...{
this.cardno = cardno;
}
@Id
@GeneratedValue
public Integer getId() ...{
return id;
}
public void setId(Integer id) ...{
this.id = id;
}
@Column(nullable=false,length=18,unique = true)
public String getCardno() ...{
return cardno;
}
public void setCardno(String cardno) ...{
this.cardno = cardno;
}
//@JoinColumn列名为Person_ID作为外键 对应Person表的personid列
@OneToOne(optional = false, cascade = CascadeType.REFRESH)
@JoinColumn(name = "Person_ID", referencedColumnName = "personid",unique = true)
public Person getPerson() ...{
return person;
}
public void setPerson(Person person) ...{
this.person = person;
}
}
@Entity
@Table(name = "IDCard")
public class IDCard implements Serializable...{
private Integer id;
private String cardno;
private Person person;
public IDCard() ...{
}
public IDCard(String cardno) ...{
this.cardno = cardno;
}
@Id
@GeneratedValue
public Integer getId() ...{
return id;
}
public void setId(Integer id) ...{
this.id = id;
}
@Column(nullable=false,length=18,unique = true)
public String getCardno() ...{
return cardno;
}
public void setCardno(String cardno) ...{
this.cardno = cardno;
}
//@JoinColumn列名为Person_ID作为外键 对应Person表的personid列
@OneToOne(optional = false, cascade = CascadeType.REFRESH)
@JoinColumn(name = "Person_ID", referencedColumnName = "personid",unique = true)
public Person getPerson() ...{
return person;
}
public void setPerson(Person person) ...{
this.person = person;
}
}
关系维护端代码Person.java
@SuppressWarnings("serial")
@Entity
/**//**
* name="Person" 表示数据库中表名为Person
* 如果省略此条注释,则数据库默认表明为Person 即类名
* 若想另外命名,可省略@Table
*
*/
@Table(name = "Person")
public class Person implements Serializable...{
//@Column列的注释可以放在定义属性前,也可以放在get方法前
private Integer personid;
/**//**
* @Column可以省略
* name = "PersonName"表示数据库里此表中的列名为PersonName, 省略的则为默认的name
* nullable = false表示是否此列容许空值
* length=32表示长度
*/
@Column(name = "PersonName",nullable=false,length=32)
private String name;
private boolean sex;
private Short age;
private Date birthday;
private IDCard idcard;
@Id
@GeneratedValue(strategy = GenerationType.AUTO) //(strategy = GenerationType.AUTO) 默认的,可以省略
public Integer getPersonid() ...{
return personid;
}
public void setPersonid(Integer personid) ...{
this.personid = personid;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
@Column(nullable=false)
public boolean getSex() ...{
return sex;
}
public void setSex(boolean sex) ...{
this.sex = sex;
}
@Column(nullable=false)
public Short getAge() ...{
return age;
}
public void setAge(Short age) ...{
this.age = age;
}
// @Temporal 表示对于时间的注释,因为有不同的时间格式表示方式
//@Temporal可以不用,系统将采取默认一种
@Temporal(value=TemporalType.DATE)
public Date getBirthday() ...{
return birthday;
}
public void setBirthday(Date birthday) ...{
this.birthday = birthday;
}
/**//**
* @OneToOne
* mappedBy = "person" 定义类之间双向关系,如果类之间是单向关系则不需要提供定义,若类与类之间有双向关系则一定钥匙此注释,否则造成数据不一致
* cascade 级联关系
* optional = true表示idcard属性可以null
* fetch 有FetchType.EAGER和FetchType.LAZY前者为主类加载同时加载,后者是表示关系类在被访问时才加载
*/
@OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "person")
public IDCard getIdcard() ...{
return idcard;
}
public void setIdcard(IDCard idcard) ...{
this.idcard = idcard;
}
}
@Entity
/**//**
* name="Person" 表示数据库中表名为Person
* 如果省略此条注释,则数据库默认表明为Person 即类名
* 若想另外命名,可省略@Table
*
*/
@Table(name = "Person")
public class Person implements Serializable...{
//@Column列的注释可以放在定义属性前,也可以放在get方法前
private Integer personid;
/**//**
* @Column可以省略
* name = "PersonName"表示数据库里此表中的列名为PersonName, 省略的则为默认的name
* nullable = false表示是否此列容许空值
* length=32表示长度
*/
@Column(name = "PersonName",nullable=false,length=32)
private String name;
private boolean sex;
private Short age;
private Date birthday;
private IDCard idcard;
@Id
@GeneratedValue(strategy = GenerationType.AUTO) //(strategy = GenerationType.AUTO) 默认的,可以省略
public Integer getPersonid() ...{
return personid;
}
public void setPersonid(Integer personid) ...{
this.personid = personid;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
@Column(nullable=false)
public boolean getSex() ...{
return sex;
}
public void setSex(boolean sex) ...{
this.sex = sex;
}
@Column(nullable=false)
public Short getAge() ...{
return age;
}
public void setAge(Short age) ...{
this.age = age;
}
// @Temporal 表示对于时间的注释,因为有不同的时间格式表示方式
//@Temporal可以不用,系统将采取默认一种
@Temporal(value=TemporalType.DATE)
public Date getBirthday() ...{
return birthday;
}
public void setBirthday(Date birthday) ...{
this.birthday = birthday;
}
/**//**
* @OneToOne
* mappedBy = "person" 定义类之间双向关系,如果类之间是单向关系则不需要提供定义,若类与类之间有双向关系则一定钥匙此注释,否则造成数据不一致
* cascade 级联关系
* optional = true表示idcard属性可以null
* fetch 有FetchType.EAGER和FetchType.LAZY前者为主类加载同时加载,后者是表示关系类在被访问时才加载
*/
@OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "person")
public IDCard getIdcard() ...{
return idcard;
}
public void setIdcard(IDCard idcard) ...{
this.idcard = idcard;
}
}
- ejb笔记一 one to one
- EJB笔记二 one to many
- hibernate学习笔记one-to-one
- Expert.One.on.one.J2EE.Development.Without.EJB笔记
- one to one
- Hibernate one-to-one
- hibernate :one-to-one
- 一对一 one-to-one
- hibernate:one-to-one
- one-to-one 映射
- one-to-one
- Hibernate One to One
- many-to-one使用笔记
- nhibernate one to one,one to many
- 学习笔记-----------表之间的关联(one-to-one many-to-one many-to-many)
- NHibernate学习笔记(二):one-to-one关系映射
- Hibernate学习笔记:一对一的关联关系(one-to-one)
- NHibernate学习笔记(二):one-to-one关系映射
- 用delphi编写打印程序的窍门
- 关于Visual Studio 2005的调试
- Leo说说写简历之晋级篇 - 职业生涯顾问Leo - CSDNBlog
- 某驱动开发网被挂马Trojan.DL.Win32.Small.gkm
- Java语言介绍(04)开源项目(02)持久层框架(02)IBATIS
- ejb笔记一 one to one
- C专栏E-声明typedef
- Java语言介绍(04)开源项目(03)作业调度(01)Quartz
- Leo说说写简历之秘籍篇 - 职业生涯顾问Leo - CSDNBlog
- 通过键盘控制SHAPE的形态
- Java语言介绍(04)开源项目(04)模板引擎(01)Velocity
- Java语言介绍(04)开源项目(05)博客系统(01)Roller Weblogger
- C语言F-声明const
- Java语言介绍(04)开源项目(06)开发工具(01)Eclipse