比如我这里有两个实体类,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/天,具体规则查看活动详情