spring - 如何使用通用 dao 和服务层获取特定的继承实体
问题描述
在我的 spring mvc 项目上工作时,我面临以下问题:我有 UnitAppUser、VStanAppUser 和 RjuAppUser 实体类,它们扩展了 User 实体。用户实体存储一些通用信息。其余继承实体存储对特定实体的引用(UnitAppUser 具有字段 Unit 类型,VStanAppUser 具有 VStan 类型,依此类推)。这是我的父用户实体
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name="app_user")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 6628717324563396999L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@NotEmpty
@Column(name="SSO_ID", unique=true, nullable=false)
private String ssoId;
@NotEmpty
@Column(name="PASSWORD", nullable=false)
private String password;
@NotEmpty
@Column(name="FIRST_NAME", nullable=false)
private String firstName;
@NotEmpty
@Column(name="LAST_NAME", nullable=false)
private String lastName;
@NotEmpty
@Column(name="EMAIL", nullable=false)
private String email;
}
这是我的孩子班:
@Entity
@Table(name = "unit_app_user")
public class UnitAppUser extends User implements Serializable {
@JoinColumn(name = "UNITWORK", referencedColumnName = "ID")
@ManyToOne(optional = false)
private UnitDepart unitdepart;
public UnitDepart getWorkat() {
return unitdepart;
}
public void setWorkat(UnitDepart unitdepart) {
this.unitdepart = unitdepart;
}
}
@Entity
@Table(name="rju_app_user")
public class RjuAppUser extends User implements Serializable{
@JoinColumn(name = "workrju", referencedColumnName = "id")
@ManyToOne(optional = false)
private Rju rju;
public Rju getWorkat() {
return rju;
}
public void setWorkat(Rju rju) {
this.rju = rju;
}
}
最后是我的 Vstan 实体:
@Entity
@Table(name="vstan_app_user")
public class VstanAppUser extends User implements Serializable{
@JoinColumn(name = "WORKSTATION", referencedColumnName = "kod")
@ManyToOne(optional = false)
private Vstan vstan;
public Vstan getWorkat() {
return vstan;
}
public void setWorkat(Vstan vstan) {
this.vstan = vstan;
}
}
如何编写通用 dao 和服务来获取特定实体?结果我应该有这样的东西
userService.findBySSOId("somessoId").getWorkat() //should return UnitDepart, Rju or VStan
解决方案
推荐阅读
- mysql - 无法创建表 mysql(mariadb)。表已损坏
- html - CSS:对齐容器内按钮的文本
- python - matplotlib 图形在视网膜显示屏上滚动消失
- css - react native 中的样式组件未按预期工作-需要帮助以基于父容器创建可自动调整大小的图像
- c# - 如何对点列表进行分组?
- ios - 如何将按钮放置在圆形图像视图上?
- python - 每月收入和费用代码(Python)
- python - 将已安装的软件包复制到新的 Linux 发行版
- php - 此路由不支持 GET 方法。支持的方法:PUT。但我正在使用 PUT
- javascript - “this.data = this.data || {}”在记忆模式中是什么意思?