开发者社区> 问答> 正文

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

我有2个实体Student和Intsructor。我想用两个实体的Dao实现实现Dao接口。我将一个班级的User设置为Student作为讲师的父母:

@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 ...

}

和孩子们。学生

@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实现。

但有一个问题。我无法保存每个实体的所有属性,因为在User类中只有其中一些属性。学生和教师除了继承的属性外,还拥有自己的属性。

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

谢谢

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 15:26:04 425 0
1 条回答
写回答
取消 提交回答
  • 您可以尝试使用泛型。

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

    并且在需要时,您可以扩展和定义特定功能。

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

    希望这可以帮助!

    回答来源:Stack Overflow

    2020-03-26 15:26:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载