create table Users        
(
User_id varchar(32) primary key,                  
First_name varchar(20),           
Middle_name varchar(20),
Last_name varchar(32),
Nick_name varchar(32),         
Email varchar(32),  
Password varchar(32),
logo varchar(100),
description varchar(1000)      
); 这是表结构
我的目的是 有2个角色,一个叫学生一个叫家长,他们之间的关系是一对一,但是要在一张表中反映.
我的想法是 添加学生时,把家长也set进去
具体java代码如下
User student = new User();
User parent = new Parent();
student.setName(".....");
parent.setName(".....");
student.setParent(parent);//学生把家长设置到自己的一地一关系中
parent.setStudent(student);//家长把学生设置到自己的一对一关联中
userDAO.save();
那么查询的时候可以只需要一个对象 然后lazy 来取得另外一个,我的目的是这样然后配置是这样
  <one-to-one name = "student" class="com.wptech.school.domain.model.Users" cascade = "all" />
        <one-to-one name = "parent" class = "com.wptech.school.domain.model.Users" cascade = "all"/>
pojo代码是这样
private String userId;
private String firstName;
private String middleName;
private String lastName;
private String nickName;
private String email;
private String password;
private String logo;
private String description;
private Users parent;
private Users student;set...get...感觉这样配置错了 但是以前没搞过不知道怎么解决 所以希望有这样的需求的朋友给点思路 或者其他做法..

解决方案 »

  1.   

    个人感觉这个两个配置中有一个配lazy="false"就可以了
    <one-to-one name = "student" class="com.wptech.school.domain.model.Users" cascade = "all" />
    <one-to-one name = "parent" class = "com.wptech.school.domain.model.Users" cascade = "all"/> 
      

  2.   

    首先学生和家长一对一设计就有问题,都是单身家庭啊对于one-to-one 做了主外键约束是不能lazy.
    我假设你的Users是主表
    要想lazy,写配置文件的时候必须满足三个条件,lazy=ture,constrained=true,fetch=select
      

  3.   

    数据库这样:
    不分什么家长和学生,都是User
    定义一个字段,该字段表示该条记录的父节点的id。