Jpa @OneToOne
@OneToOne :一对一
现在有两个类:PrepAgentInfo(准客户信息类); PrepAgentImage(准客户映像类)
PrepAgentImage中包含PrepAgentInfo 一对一关系
PrepAgentImage.class
public class PrepAgentImage{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
/**
* 准增员信息对象
* */
@OneToOne(fetch= FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name="prep_agent_info_id")
private PrepAgentInfo prepAgentInfo;
}
PrepAgentInfo.class
@Entity
@Table(name = "wechat_prepAgent_info")
public class PrepAgentInfo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
代码解释:
@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表中的主键形成关联,
别问为什么,默认级是关联的实体所对应表的主键.如下图:以上两个类我只展示了部分属性。
还没有评论,来说两句吧...