关于Hibernate 单个表一对一自关联问题(点击查看具体描述)在线等
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...
感觉这样配置错了 但是以前没搞过不知道怎么解决 所以希望有这样的需求的朋友给点思路 或者其他做法..
------解决方案--------------------up
------解决方案--------------------帮顶 。。
------解决方案--------------------个人感觉这个两个配置中有一个配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"/>
------解决方案--------------------来看看。。。。不记得了。。。。
------解决方案--------------------首先学生和家长一对一设计就有问题,都是单身家庭啊
对于one-to-one 做了主外键约束是不能lazy.
我假设你的Users是主表
要想lazy,写配置文件的时候必须满足三个条件,lazy=ture,constrained=true,fetch=select
------解决方案--------------------数据库这样:
不分什么家长和学生,都是User
定义一个字段,该字段表示该条记录的父节点的id。