问题描述
表关系: sync(多) ---- media(一)
在用jpa做向项目的时候,一般两张表关联的时候都是拿id关联的,所以在实体类中维护注解@ManyToOne的时候,在sync表一般是这样写的
@ManyToOne
@JoinColumn(name = "sn")
private Media media;
这个注解就是吧sync表的sn 字段和media表关联,这个时候,你用jpql语句写join的时候,你会发现它默认关联的是media的id主键字段,而当你的业务不是关联主键的时候,那该怎么办?
解决方法
在@JoinColumn中指明与media表关联的字段是哪个
@ManyToOne
@JoinColumn(name="sn", referencedColumnName="sn")
private Media media;
这样的话,就代表sync表的sn字段关联media的sn字段,完美解决