我有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
您可以尝试使用泛型。
public interface GenericDAO<T> {
List<T> getAll();
}
并且在需要时,您可以扩展和定义特定功能。
public interface UserDAO extends GenericDAO<User> {
User getAllWithAvatar();
}
希望这可以帮助!
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。