一开始我想告诉我,我是这个王者的新手。 我遇到了为spring spring MVC应用程序创建正确的sql表的问题。为了管理我的数据库我正在使用Hibernate。我的应用程序有两种类型的用户: *主要 - 姓名,电子邮件, * secondary - 在我看来应该扩展“primary”,因为它具有相同的属性以及仅属于“secondary”的附加属性
到目前为止,我为用户创建了两个模型:
用户
@Entity
@Table(name = "users", catalog = "findbabysister")
public class User {
@Id
@Column(name = "username", unique=true,
nullable = false, length = 45)
private String email;
@Column(name = "password")
private String password;
private String passwordConfirm;
@Column(name = "enabled")
private boolean enabled = true;
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
@Column(name = "sex")
private boolean sex;
@Column(name = "zipCode")
private String zipCode;
private Set<UserRole> userRole = new HashSet<UserRole>(0);
}
和UserNanny
@Entity
@Table(name = "usersGuardian", catalog = "findbabysister")
public class UserNanny extends User{
@Column(name = "typOfJob")
private String typOfJob;
@Column(name = "whatUwannaDo")
private String whatUwannaDo;
public String getTypOfJob() {
return typOfJob;
}
public void setTypOfJob(String typOfJob) {
this.typOfJob = typOfJob;
}
public String getWhatUwannaDo() {
return whatUwannaDo;
}
public void setWhatUwannaDo(String whatUwannaDo) {
this.whatUwannaDo = whatUwannaDo;
}
}
现在我想知道如何正确创建表格。我知道我可以使用单表策略,但这不是一个专业的方法来完成这项任务。我的想法是创建两个这样的表:
“用户”: *电子邮件Pk * 用户名 *密码 * 名字 * 姓 *性 *邮政编码
“UsersGuardian”: *电子邮件Pk * 用户名 *密码 * 名字 * 姓 *性 * 邮政编码 * typeOfJob * whatUWannaDo
如果在我的情况下这是一个很好的解决方案,请告诉我。
提前感谢您提供任何信息:)
答案 0 :(得分:0)
Hibernate提供了各种方法来解决这种情况。您可以根据您的要求拥有单个表或多个表。我建议你阅读下面的页面,它解释了继承映射,这是你需要实现的。
http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html