jpa 一对关联

方式一

  PromotionCouponConditionEntity 实体的主键关联  PromotionEntity的主键
    @OneToOne(optional = false)
    @PrimaryKeyJoinColumn
    private PromotionEntity promotion;
    
  双向关联的话在:  PromotionEntity 的实体中  
   @OneToOne(optional = false)
    @PrimaryKeyJoinColumn
    private PromotionCouponConditionEntity promotion;

方式二

 @OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY,optional = false)
    @JoinColumn(name="id",referencedColumnName="memberId")
    @JsonIgnore
    private PointsEntity points;



public class PointsEntity extends BaseBusinessEntity {

    public static final String TABLE_NAME = "ae_member_points";

    private Long tid;
    private Long orgId;
    private Long memberId;
    private Long lifeTimePoints;
    private Long pointsBalance;
}

方式三

在person里面定义的注释代码  
@OneToOne(cascade = CascadeTye.ALL,optional = true)  
public IDCard getIdCard(){  
   return idCard;  
}  



在idcard里面定义的注释代码 
@OneToOne(cascade = CascadeType.ALL,mappedBy = "idCard",optional = false)  
public Person getPerson(){  
   return person;  
}  

/*
* @OneToOne注释指明Person 与IDCard为一对一关系,@OneToOne注释五个属性:fetch ,targetEntity、cascade、、optional 和mappedBy,
*

*fetch属性:FetchType类型的属性。可选择项包括:FetchType.EAGER 和FetchType.LAZY。
*FetchType.EAGER表示关系类(本例是OrderItem类)在主类加载的时候同时加载,FetchType.LAZY表示关系类在被访问时才加载。默认值是FetchType.LAZY。
*targetEntity属性:Class类型的属性。定义关系类的类型,默认是该成员属性对应的类类型,所以通常不需要提供定义。
*cascade属性:CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作,
*而且这种关系是递归调用的。cascade的值只能从CascadeType.PERSIST(级联新建)、CascadeType.REMOVE(级联删除)、
*CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)中选择一个或多个。还有一个选择是使用CascadeType.ALL,表示选择全部四项。
*
optional = true设置idcard属性可以为null,也就是允讦没有身份证,未成年人就是没有身份证的。
*
*@OrderBy(value = “id ASC”)注释指明加载元组时按id的升序排序(降序 “DESC”)
*/

mappedBy:
1>只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
2>mappedBy标签一定是定义在被拥有方的,他指向拥有方;
3>mappedBy的含义,应该理解为,拥有方能够自动维护跟被拥有方的关系,当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的;
4>mappedBy跟joinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值