【发布时间】:2010-12-19 17:09:06
【问题描述】:
例如,我有两个实体:Employee 和 Address。在这些实体中,Employee 有一个外键 AddressID 引用 Address 上的 ID 列。在 Java 域对象中,Hibernate 很好地用地址对象字段包装了伪造键整数字段。但是现在,我如何查询具有某个 AddressID 的 Employee 呢?
我已尝试创建表别名。这似乎有效,但它相当尴尬。
我也尝试过这样做:
criteria.add(restriction.eq("TheAddressObjectFieldName", 123);
它在一段时间内有效,但并非总是如此。我不确定这是正确的方法,但我一直希望它可以。
那么在hibernate中查询外键列的正确方法是什么?
【问题讨论】:
-
我要问:为什么Employee有地址的ID字段?一名员工不能拥有多个地址吗? Address 对象有一个员工的 ID 字段不是更有意义吗?最后,更有可能的是——一个员工有多个地址,还是一个地址有多个员工?如果是前者,那么你的外键关系就被颠倒了......
-
感谢 delfuego 的评论。这只是我想出的一个简单的例子来展示这个问题。对于真正的生产系统,我同意这种关系可能会更复杂。可能会有一个关联表。