系统有3张表:
=============================================================================
有一个对象扩展表(ExtObj) 主要用于存储下面2类对象(雇员和档案信息)的共用属性
obj_id 对象id (该列的值根据obj_type的不同可为雇员表或档案表的主键值)
obj_type 对象类型(1表示雇员,2表示档案信息)
rcd_per 录入人
rcd_time 录入时间
=============================================================================
有一个雇员表(Employee)
id 主键
name 姓名
age 年龄
==============================================================================
有一个档案信息表(Infor)
id 主键
content 内容问怎么设计实体以及映射,才满足要求
其中ExtObj相当于雇员表或档案信息表的扩展表 ,和2类对象都是一一对应的关系
解决方案 »
- struts2跳转问题
- 求教一个struts2的<iterator>标签问题,希望迭代的索引从第二个元素开始,请高手指教。在线等。。。
- displayTag 大数据分页已经实现,但怎么导出所有记录?
- url变量从浏览器到action的编码状态是如何变的?
- PicoContainer源码导读
- JDBC: 两种方法,哪个对?
- 关于quartz问题
- 请介绍一下java的自省机制,谢谢
- weblogic7连sqlserver 2000出错!请高手帮忙!
- 想问一个与XML有关的问题(JBuilder环境)
- 警告: No configuration found for the specified action: 'login.action' in namespace: '/'. Form action d
- 简单的jta问题
自己关系弄清楚了就很简单了
@Embeddable
public class ExtObjPK implements Serializable{
private Integer id;//假设Employee和Infor的id都是Integer类,如果不是就统一为String类型
private String className;//类名,如:Employee.getClass().getName(); private Object toObject(){
Class clazz = Class.forName(this.className);//上塑成类
Constructor c = clazz.getConstructor(Integer.class);//生成一个构造器
Object obj = c.newInstance(id);//构造出一个对象,注意:Employee和Infor类必须有相应的构造方法。
} public ExtObjPK(Integer id, String className){
this.id = id;
this. className = className;
}
}@Entity
public class ExtObj implements Serializable{
@Id
private ExtObjPK id;
private YourClass rcd_per; //录入人
private YourClass rcd_time; //录入时间
private Employee employee;
private Infor infor; public void setId(){
if(employee != null)
this.id = new ExtObjPK(employee.getId(),employee.getClass().getName());
if(infor != null)
this.id = new ExtObjPK(infor.getId(), infor.getClass().getName());
} other getter & setter ...
}@Entity
public class Employee{ private Integer id;
private String name;
private Integer age;
... pubic Employee(Integer id){this.id = id;}
}@Entity
public class Infor{ private Integer id;
private String content;
... pubic Infor(Integer id){this.id = id;}
}
雇员表employee表假设有一条数据
id name age
ABDCDEF68853ABAAA 张三 18档案资料表有一条数据
id content
INF20081101133021X0001 关于数据科技创新的。对象扩展表的数据为
obj_id obj_type rcd_per rcd_time
ABDCDEF68853ABAAA 1 admin 20091223 (和员工表数据一一对应)
INF20081101133021X0001 2 admin 20100111 (和档案表数据一一对应)
ExtObj这个实体类,的主键看来要设计成联合主键obj_type和obj_id用过hibernate这么久了,我就没这样用过,一般数据库字典用的是继承映射。。