这是我的数据库结构:
http://github.com/voku/anti-xss
我有一个AbstractUser
表,用于我的角色表的常见属性:Nurse
,Doctor
或将来可能会添加其他角色。
我还得到一个Event
表,它使用abstract_user_id作为fk。
我可以很容易地获得AbstractUser
的关联Event
,问题是如何才能获得AbstractUser
的具体类,我能想到的唯一方法就是去通过角色表(护士,医生等),并在这些表中使用fk(abstract_user_id)来检查AbstractUser.id
是否存在。
有没有更好的方法呢?
我要求更好的方法因为似乎每当我需要AbstractUser
的具体类时我必须这样做,并且我不能把它放到一个方法中,因为返回类型没有确定。在任何地方重复这一点让我感觉到代码味道:
AbstractUser absUser = event.getAbsUser();
if(existInNurseTable(absUser)){
Nurse n = getNurseByAbsUser(absUser);
...
//business logic
}else if(...){
...
}else{
...
}