比如我这里有两个实体类,userloginpo和userlogininfo
现在userloginpo类部分代码是这样的:
public class userloginpo {
//数据库生成
private int userid; //用户id
//.....其他神略
private userlogininfo ulinfo;
@Id
@Column(name="luid",unique=true,nullable=false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
@OneToOne(mappedBy = "ulp",fetch = FetchType.LAZY)
@Cascade({CascadeType.SAVE_UPDATE ,CascadeType.DELETE})
@JoinColumn(name = "luserid")
public userlogininfo getUlinfo() {
return ulinfo;
}
public void setUlinfo(userlogininfo ulinfo) {
this.ulinfo = ulinfo;
}
接下来我们看看userlogininfo表应该怎么设置:
public class userlogininfo {
private int userid; //用户id
//神略其他
private userloginpo ulp;
@Id
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name ="idGenerator",strategy="foreign" ,parameters=@Parameter(name="property",value="ulp"))
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
@OneToOne
@JoinColumn(name="luserid")
public userloginpo getUlp() {
return ulp;
}
public void setUlp(userloginpo ulp) {
this.ulp = ulp;
}
//神略其他
注解中的关键字foreign就是表示当前的id是由其他字段来指定的:
parameters=@Parameter(name="property",value="ulp")
value的值就是另外一个实体
注意为什么没有在userlogininfo中定义id的数据库信息呢,因为我们指定了他的信息由userloginpo来指定,就是ulp来指定,因为此时ulp中定义的外键就是userlogininfo的主键,既luserid就是他的主键。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情