实体关系之@OneToOne

Person.java

Java代码 收藏代码
  1. packagecom.entity;
  2. importjava.io.Serializable;
  3. importjava.util.Date;
  4. importjavax.persistence.CascadeType;
  5. importjavax.persistence.Column;
  6. importjavax.persistence.Entity;
  7. importjavax.persistence.GeneratedValue;
  8. importjavax.persistence.Id;
  9. importjavax.persistence.OneToOne;
  10. importjavax.persistence.Table;
  11. importjavax.persistence.Temporal;
  12. importjavax.persistence.TemporalType;
  13. /**
  14. *关系维护端Person.java
  15. */
  16. @Entity
  17. @Table(name="Person")
  18. publicclassPersonimplementsSerializable{
  19. privateIntegerpersonid;//人员ID
  20. privateStringname;//姓名
  21. privatebooleansex;//性别
  22. privateShortage;//年龄
  23. privateDatebirthday;//生日
  24. privateIDCardidcard;//身份证号码
  25. @Id
  26. @GeneratedValue
  27. publicIntegergetPersonid(){
  28. returnpersonid;
  29. }
  30. publicvoidsetPersonid(Integerpersonid){
  31. this.personid=personid;
  32. }
  33. @Column(name="PersonName",nullable=false,length=32)
  34. publicStringgetName(){
  35. returnname;
  36. }
  37. publicvoidsetName(Stringname){
  38. this.name=name;
  39. }
  40. @Column(nullable=false)
  41. publicbooleangetSex(){
  42. returnsex;
  43. }
  44. publicvoidsetSex(booleansex){
  45. this.sex=sex;
  46. }
  47. @Column(nullable=false)
  48. publicShortgetAge(){
  49. returnage;
  50. }
  51. publicvoidsetAge(Shortage){
  52. this.age=age;
  53. }
  54. /*
  55. *@Temporal主要是用来指明java.util.Date或java.util.Calendar类型的属性具体与数据库(date,time,timestamp)三个类型中的那一个进行映射
  56. */
  57. @Temporal(value=TemporalType.DATE)
  58. publicDategetBirthday(){
  59. returnbirthday;
  60. }
  61. publicvoidsetBirthday(Datebirthday){
  62. this.birthday=birthday;
  63. }
  64. /*
  65. *@OneToOne注释指明Person与IDCard为一对一关系,@OneToOne注释五个属性:targetEntity、cascade、fetch、optional和mappedBy,
  66. *fetch属性默认值是FetchType.EAGER。optional=true设置idcard属性可以为null,也就是允讦没有身份证,未成年人就是没有身份证的。
  67. *
  68. *targetEntity属性:Class类型的属性。定义关系类的类型,默认是该成员属性对应的类类型,所以通常不需要提供定义。
  69. *cascade属性:CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作,
  70. *而且这种关系是递归调用的。cascade的值只能从CascadeType.PERSIST(级联新建)、CascadeType.REMOVE(级联删除)、
  71. *CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)中选择一个或多个。还有一个选择是使用CascadeType.ALL,表示选择全部四项。
  72. *
  73. *fetch属性:FetchType类型的属性。可选择项包括:FetchType.EAGER和FetchType.LAZY。
  74. *FetchType.EAGER表示关系类(本例是OrderItem类)在主类加载的时候同时加载,FetchType.LAZY表示关系类在被访问时才加载。默认值是FetchType.LAZY。
  75. *
  76. *@OrderBy(value="idASC")注释指明加载元组时按id的升序排序(降序"DESC")
  77. */
  78. @OneToOne(optional=true,cascade=CascadeType.ALL,mappedBy="person")
  79. publicIDCardgetIdcard(){
  80. returnidcard;
  81. }
  82. publicvoidsetIdcard(IDCardidcard){
  83. this.idcard=idcard;
  84. }
  85. }



IDCard.java

Java代码 收藏代码
  1. packagecom.entity;
  2. importjava.io.Serializable;
  3. importjavax.persistence.CascadeType;
  4. importjavax.persistence.Column;
  5. importjavax.persistence.Entity;
  6. importjavax.persistence.GeneratedValue;
  7. importjavax.persistence.Id;
  8. importjavax.persistence.JoinColumn;
  9. importjavax.persistence.OneToOne;
  10. importjavax.persistence.Table;
  11. @Entity
  12. @Table(name="IDCard")
  13. publicclassIDCardimplementsSerializable{
  14. privateIntegerid;//流水号
  15. privateStringcardno;//身份证号码
  16. privatePersonperson;//对应的人
  17. publicIDCard(){
  18. }
  19. publicIDCard(Stringcardno){
  20. this.cardno=cardno;
  21. }
  22. @Id
  23. @GeneratedValue
  24. publicIntegergetId(){
  25. returnid;
  26. }
  27. publicvoidsetId(Integerid){
  28. this.id=id;
  29. }
  30. @Column(nullable=false,length=18,unique=true)
  31. publicStringgetCardno(){
  32. returncardno;
  33. }
  34. publicvoidsetCardno(Stringcardno){
  35. this.cardno=cardno;
  36. }
  37. /**
  38. *@OneToOne注释指明IDCard与Person为一对一关系,IDCard是关系被维护端,optional=false设置person属性值不能为null,也就是身份证必须有对应的主人。
  39. *@JoinColumn(name="Person_ID",referencedColumnName="personid",unique=true)指明IDCard对应表的Person_ID列作为外键与
  40. *Person对应表的personid列进行关联,unique=true指明Person_ID列的值不可重复。
  41. *@return
  42. */
  43. @OneToOne(optional=false,cascade=CascadeType.REFRESH)
  44. @JoinColumn(name="Person_ID",referencedColumnName="personid",unique=true)
  45. publicPersongetPerson(){
  46. returnperson;
  47. }
  48. publicvoidsetPerson(Personperson){
  49. this.person=person;
  50. }
  51. }
转自:http://lym6520.iteye.com/blog/311030

猜你喜欢

转载自lcpstyle.iteye.com/blog/2244749