使用Hibernate创建表

时间:2016-11-28 12:48:21

标签: sql spring hibernate spring-mvc

一开始我想告诉我,我是这个王者的新手。 我遇到了为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

如果在我的情况下这是一个很好的解决方案,请告诉我。

提前感谢您提供任何信息:)

1 个答案:

答案 0 :(得分:0)

Hibernate提供了各种方法来解决这种情况。您可以根据您的要求拥有单个表或多个表。我建议你阅读下面的页面,它解释了继承映射,这是你需要实现的。

http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html