java - Hibernate逆向工程

标签 java hibernate orm

我有一个结构,其中主表是 USER,其他表包括 CATEGORY(包含 user_id)。

经过标准逆向工程程序后我得到的是:

  • User 类包含类别的集合,
  • Category 类不包含外键 (user_id),但包含 User 对象。

为什么它不包含外键作为类属性?

如何在没有胶水的情况下在 HQL 中连接这两个表? HQL - 请解释这部分。

最佳答案

Why did it not contain the foreign key as a class property?

因为 Hibernate 是一个对象-关系映射工具,Hibernate 允许使用对象模型(即对象和对象之间的关系)并将它们映射到数据库表示(表的数据行)。 Hibernate 的全部意义在于弥合面向对象范式和关系范式之间的差距(著名的 Object-Relational Impedance Mismatch )。在您的情况下,以下对象模型是预期的(正确的)对象表示:

alt text http://img251.imageshack.us/img251/6335/110b578b.png

And how do I join these two tables in HQL without that glue?

胶水 就在那里,但你必须考虑对象(和关联)。例如(参见 14.3. Associations and joins):

from Category as category join category.user as user

请注意,HQL 支持两种形式的关联加入:隐式显式(参见14.4. Forms of join syntax)。上面的示例使用了一个显式 连接。 隐式 形式不使用 join 关键字,而是使用点符号:

from Category category where category.user.id =: id

关于java - Hibernate逆向工程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416775/

相关文章:

java - 使用来自 URI 的参数进行 PostMapping

java - 在现有数据库中创建表 sqlite sugar orm

jpa - Eclipselink 实体映射缓存

java - 运行时的泛型

java - 是否可以使用默认包导入类文件?

java - 有没有办法将列的一部分映射到变量?

java - hibernate :无法使用 CascadeType.PERSIST

java - org.hibernate.AnnotationException : Unknown mappedBy in: mdl. Complaint.jobDone,引用属性未知 : mdl. JobDone.jobDone

java - 如何使用JPA存储通用实体?

java - Gradle 2.3-Zip64 = true的BootRepackage找不到Start-Class