映射表中外键的值

时间:2014-06-10 18:07:19

标签: mysql sql hibernate

我正在为我的项目使用hibernate,我实际上要做的是弄清楚如何使用数据库中我的表中的外键将值自动映射到数据对象。

例如,我有一个包含以下列的用户表

id - INT
username - VARCHAR
password - VARCHAR
email - VARCHAR
firstName - VARCHAR
lastName - VARCHAR

这是非常简单的映射,因为没有涉及外键。我的代码是:

SQLQuery q = session.createSQLQuery("SELECT * FROM users WHERE username=? AND password=?");
            q.setString(0, username);
            q.setString(1, password);
            q.addEntity(User.class);

            List<User> users = q.list()

现在假设我在我的用户表中添加了一些外键,例如

userlevel_id - INT
department_id - INT

参考用户所属的用户级别和部门。如何让hibernate映射userlevel表中的用户级名称和department表中的部门名称?如果我只是将id存储在User数据对象中,它将不会有多大用处,因为我需要稍后在我的视图中显示值。任何帮助将不胜感激,谢谢!!

1 个答案:

答案 0 :(得分:1)

@ManyToOne对象上使用热切加载的User映射。创建一个对象来代表您的DepartmentUserLevel,并将它们作为字段添加到User对象中。您应该急切地加载此映射的原因是,从来没有您不想在没有UserDepartment的情况下加载UserLevel的情况。 Hibernate会自动将您的User对象映射到相应的DepartmentUserLevel

如果您也愿意,可以建立关系bi-directional,这样您就可以通过选择部门来获取部门中的所有用户。您可以在SQL中使用Hibernate进行映射。

阅读文档,看看是否有帮助。