如何使用泛型dao和服务层

时间:2018-05-04 10:06:34

标签: spring hibernate spring-mvc jpa orm

在我的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

0 个答案:

没有答案