DAO 接口:2 个实体的实现(Java,Hibernate)

DAO interface: Implementation for 2 entities (Java, Hibernate)

我有 2 个实体学生和讲师。我想为两个实体实现 Dao 接口和 Dao 实现。我将一个 class 用户设置为 parent 的学生和讲师:

@MappedSuperclass 
public abstract class User {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name = "name")
    private String firstName;

    @Column(name = "password")
    private String password;

    @Column(name = "email")
    private String email;

    getters and setters ...

}

和children。学生

@Entity 
@Table(name = "student", schema="els")
public class Student extends User {
    @Column(name="achiev")
    private String achievment;      


   public Student() {
   }

   getter and setter for achievment

}

和讲师

@Entity
@Table(name = "instructor", schema="els")
public class Instructor extends User {

    @Column(name = "reputation")
    private int reputation;

    public Instructor() {
    }

    public int getReputation() {
        return reputation;
    }

    public void setReputation(int reputation) {
        this.reputation = reputation;
    }
}

道接口:

public interface DAO {
    List<User> getAllUsers();

    ...

}

两个实体的 DAO 实现。

但是有个问题。我无法保存每个实体的所有属性,因为在用户 class 中我只有其中一些。 Student 和 Instructor 除了继承属性外还有自己的属性。

如何实现DAO和实体。在这种情况下什么是好的做法?

谢谢

您可以尝试使用泛型。

public interface GenericDAO<T> {
  List<T> getAll();
}

并且在需要的时候,可以对具体的功能进行扩展和定义。

public interface UserDAO extends GenericDAO<User> {
    User getAllWithAvatar();
}

希望对您有所帮助!