java - DAO 接口:2 个实体(Java、Hibernate)的实现
问题描述
我有 2 个实体 Student 和 Intsructor。我想用 Dao 实现为两个实体实现 Dao 接口。我将一个班级用户设置为 Student an Instructor 的父母:
@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 类中我只有其中的一些。Student 和 Instructor 除了继承属性外,还有自己的属性。
如何实现 DAO 和实体。在这种情况下有什么好的做法?
谢谢
解决方案
您可以尝试使用泛型。
public interface GenericDAO<T> {
List<T> getAll();
}
并且在需要时,您可以扩展和定义特定的功能。
public interface UserDAO extends GenericDAO<User> {
User getAllWithAvatar();
}
希望这可以帮助!
推荐阅读
- android - 如何在颤动中将 RSS pubDate 字符串转换为 DateTime?
- java - 火花3错误java.lang.UnsatisfiedLinkError:java.library.path中没有zstd-jni
- javascript - 找到数组中所有对的最小差的总和
- spring - 即使在使用 permitAll 之后,我在使用 Spring Security 时也会收到 401 未经授权的错误
- python - Tkinter 无法增加框架/网格行高
- excel - 合并多个 Excel 文件,拉入文件名,使用正则表达式过滤文件名,将过滤后的文件名添加到新列中
- javascript - 阐明非阻塞异步的代码示例。代码 - 是否正确?
- unreal-engine4 - 为我的蓝图创建视口图标
- javascript - Chrome 扩展消息 - 无法读取未定义的属性
- pointers - 具有指针的共享内存数据结构