Jpa @OneToOne

雨点打透心脏的1/2处 2022-05-08 12:14 271阅读 0赞

@OneToOne :一对一
现在有两个类:PrepAgentInfo(准客户信息类); PrepAgentImage(准客户映像类)
PrepAgentImage中包含PrepAgentInfo 一对一关系

PrepAgentImage.class

  1. public class PrepAgentImage{
  2. @Id
  3. @GeneratedValue(strategy = GenerationType.IDENTITY)
  4. private int id;
  5. /**
  6. * 准增员信息对象
  7. * */
  8. @OneToOne(fetch= FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
  9. @JoinColumn(name="prep_agent_info_id")
  10. private PrepAgentInfo prepAgentInfo;
  11. }

PrepAgentInfo.class

  1. @Entity
  2. @Table(name = "wechat_prepAgent_info")
  3. public class PrepAgentInfo implements Serializable {
  4. @Id
  5. @GeneratedValue(strategy = GenerationType.IDENTITY)
  6. private int id;
  7. /**
  8. * 创建时间
  9. */
  10. private Date createTime;
  11. /**
  12. * 更新时间
  13. */
  14. private Date updateTime;

}

代码解释:

  1. @OneToOne(fetch= FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})

1.fetch属性是该实体的加载方式,有两种:LAZY(懒加载在调用属性的时候才赋值)和EAGER(饿汉式上来就加载)。默认为LAZY
2.cascade属性表示与此实体一对一关联的实体的联级样式类型。联级样式上当对实体进行操作时的策略。
说明:在定义关系时经常会涉及是否定义Cascade(级联处理)属性,担心造成负面影响.
·不定义,则对关系表不会产生任何影响
·CascadeType.PERSIST (级联新建)
·CascadeType.REMOVE (级联删除)
·CascadeType.REFRESH (级联刷新)
·CascadeType.MERGE (级联更新)中选择一个或多个。
·还有一个选择是使用CascadeType.ALL ,表示选择全部四项
3.@JoinColumn(name="prep_agent_info_id") private PrepAgentInfo prepAgentInfo;
解释:在PrepAgentImage中的prep_agent_info_id字段与PrepAgentInfo表中的主键形成关联,
别问为什么,默认级是关联的实体所对应表的主键.如下图:以上两个类我只展示了部分属性。
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,271人围观)

还没有评论,来说两句吧...

相关阅读