hibernate @oneToone 注解
我这边有个User 表,还有个avatar表,avatar里面有个字段为userId,我现在要做one to one 的影射,在查询user 的时候把avatar 查询出来.但是avatar里面不能包含user对象,我要转化成json
------最佳解决方案--------------------楼主的意思不就是要单向关联吗。在User中的getAvatar()上加
@OneToOne
@JoinColumn(name="User实体中的主键",referencedColumnName="userId")
------其他解决方案--------------------在User实体里面的getAvatar()方法上面加 @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY),Avatar不做关联就可以实现一对一单向关联
------其他解决方案--------------------这个不用mapby么
------其他解决方案--------------------这样的话我的理解就是说user表中要有avatar这个字段,你这个是加在avatar还是user中的
------其他解决方案--------------------
user中不需要avatar的关联字段啊。因为你avatar表中已经有外间了。用的是你user的主键和avatar的外建进行关联。
@JoinColumn里面的name就是你当前表的主键,referencedColumnName用的就是你avatar表中的userId
这完全不矛盾
------其他解决方案--------------------我按照你的做了,它会自动更新user表,添加上一个avatar字段,但是在写unit test的时候查询出来的avatar为null.
------其他解决方案--------------------你实体类怎么写的
------其他解决方案--------------------
private Integer id;
private String username;
private String email;
private String password;
private Integer joinStamp;
private Integer activityStamp;
private String accountType;
private boolean emailVerify;
private Integer joinIp;
private Avatar avatar;
@OneToOne
@JoinColumn(name="id",referencedColumnName="userId")
public Avatar getAvatar() {
return avatar;
}
------其他解决方案--------------------private Integer id;
private Integer hash;
private Integer userId;
@Column(name = "`userId`")
public Integer getUserId() {
return userId;
}
------其他解决方案--------------------