日期:2014-05-19  浏览次数:20601 次

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不做关联就可以实现一对一单向关联
------其他解决方案--------------------
引用:
在User实体里面的getAvatar()方法上面加 @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY),Avatar不做关联就可以实现一对一单向关联
这个不用mapby么
------其他解决方案--------------------
引用:
楼主的意思不就是要单向关联吗。在User中的getAvatar()上加
@OneToOne
@JoinColumn(name="User实体中的主键",referencedColumnName="userId")
这样的话我的理解就是说user表中要有avatar这个字段,你这个是加在avatar还是user中的
------其他解决方案--------------------
引用:
引用:
楼主的意思不就是要单向关联吗。在User中的getAvatar()上加
@OneToOne
@JoinColumn(name="User实体中的主键",referencedColumnName="userId")这样的话我的理解就是说user表中要有avatar这个字段,你这个是加在avatar还是user中的

user中不需要avatar的关联字段啊。因为你avatar表中已经有外间了。用的是你user的主键和avatar的外建进行关联。
@JoinColumn里面的name就是你当前表的主键,referencedColumnName用的就是你avatar表中的userId
这完全不矛盾
------其他解决方案--------------------
我按照你的做了,它会自动更新user表,添加上一个avatar字段,但是在写unit test的时候查询出来的avatar为null.

引用:
引用:引用:
楼主的意思不就是要单向关联吗。在User中的getAvatar()上加……

------其他解决方案--------------------
你实体类怎么写的
------其他解决方案--------------------
引用:
你实体类怎么写的


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;
    }

------其他解决方案--------------------