有两张表,一张用户信息表epi_userinfo,还有一张用户信息表的补表epi_userinfo_part。
因为考虑到数据的查询效率,把不常用的信息放在epi_userinfo_part表,常用的信息放在了epi_userinfo。
表的大概数据是这样的
epi_userinfo:
     id,username,nickname,password,...
epi_userinfo_part:
     user_id(epi_userinfo的id),regdate,regip...因为现在id是用户信息表的主键,又是用户信息表的主外键(用户信息补表和用户信息表是一对一的关系)。
请问这个映射该怎么写呢(最好是用标注的,用xml也行)。

解决方案 »

  1.   

    主表类中中ID成员变量是id,getter这么写
    @OneToOne(mappedBy="id")
    public String getID() {
    ...
    }补表类ID叫userId
    @OneToOne
    public String getUserId() {
    ...
    }
      

  2.   

    补表类ID叫userId
    @Column(name = "user_id)
    @OneToOne
    public String getUserId() {
    ...
    }
      

  3.   

    上面两个说糊涂了
    主表类:
    @Entity
    @Table(name = "epi_usrinfo", catalog = "数据库名字")
    public class EpiUserinfo {
        private Stirng id;
        private EpiUserinfoPart epiUserinfoPart;
        ...
        //getter 
        @OneToOne(mappedBy="user_id")
        public EpiUserinfoPart getEpiUserinfoPart(....}
    }
    补表类:
    @Entity
    @Table(name = "epi_userinfo_part", catalog = "数据库名字")
    public class EpiUserinfoPart {
        private Stirng user_id;
        private EpiUserinfo epiUserinfo;
        ...
        //getter 
        @OneToOne
        public EpiUserinfo getEpiUserinfo(....}
    }
    补表类不用写mappedBy了
      

  4.   

    我试了一下,好像还是不行。
    按上面的配置的话说找不到@Id,加上@Id。错误有点多,也只好把那个补表也加个id,这样就好弄了。