0

我有一个代表表的域对象类。这个类与另一个表有关联,但源类的属性与目标类的属性命名不同,我不知道如何休眠映射它。

这是具有集合的类的示例(一个 CT 到多个 R 实例):

public class CT {
    // This is the property in the property-ref down below
    private String b;

    // The set of Rs I want to get - there may be none that correspond to a CT instance.
    private Set rs;
}

public class R {
    // This property is mapped to the column name below.
    private String rBc;
}

<!--Snippet of the mapping for class CT-->

 <set name="rs" lazy="true" sort="MyComparator" table="R" >
      <key column="R_COLUMN_NAME_THAT_REPRESENTS_THE_RELATIONSHIP" property-ref="b" />
      <one-to-many class="CLASS_THAT_R_IS" />
 </set>

Hibernate 接受这个映射,但是当我从我知道应该存在的 CT 实例中提取 Rs 集时,我只得到一个空的 PersistentSet。

请注意,对于每个 CT 实例,完全有可能没有或超过一个 R。这就是为什么我在那里有比较器的原因——我无法弄清楚如何在没有显式 SQL 的情况下轻松地告诉 Hibernate 如何执行 ORDER BY 子句(我犹豫要不要在 Hibernate 映射中编写它。

有人可以帮我吗?

4

1 回答 1

0

问题可能出table="R"<set ..>映射中。这告诉 hibernate 使用连接表而不是直接在子表中查找外键。从命名我了解到您没有使用连接表。那是对的吗?

于 2009-06-19T19:02:39.330 回答