如何在Hibernate中映射一组对象而不使主键同名?

如何在Hibernate中映射一组对象而不使主键同名?,hibernate,properties,one-to-many,no-match,Hibernate,Properties,One To Many,No Match,我有一个表示表的域对象类。该类与另一个表有关联,但源类的“属性”与目标类的“属性”命名不同,我不确定如何休眠映射它 下面是要设置的类的示例(一个CT到多个R实例): 公共类CT{ //这是下面属性引用中的属性 私有字符串b; //我想要得到的Rs集-可能没有对应于CT实例的Rs集。 私有集; } 公共类R{ //此属性映射到下面的列名。 私有字符串rBc; } Hibernate接受这个映射,但是当我从一个我知道应该存在的CT实例中提取Rs集时,我只得到一个空的PersistentSet 注意

我有一个表示表的域对象类。该类与另一个表有关联,但源类的“属性”与目标类的“属性”命名不同,我不确定如何休眠映射它

下面是要设置的类的示例(一个CT到多个R实例):

公共类CT{
//这是下面属性引用中的属性
私有字符串b;
//我想要得到的Rs集-可能没有对应于CT实例的Rs集。
私有集;
}
公共类R{
//此属性映射到下面的列名。
私有字符串rBc;
}
Hibernate接受这个映射,但是当我从一个我知道应该存在的CT实例中提取Rs集时,我只得到一个空的PersistentSet

注意,对于每个CT实例,完全可能没有或超过一个R。这就是为什么我在那里有一个比较器——我不知道如何在没有显式SQL的情况下轻松地告诉Hibernate如何执行ORDERBY子句(我不太愿意在Hibernate映射中编写)


有人能帮我一下吗?

问题可能出在
table=“R”
映射中的
。这告诉hibernate使用联接表,而不是直接在子表中查找外键。从命名来看,我了解到您没有使用联接表。对吗?

我没有清楚地了解情况的对象方面。您能详细介绍一下对象在obj上的作用吗ect方面?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>