如何在Hibernate中映射一组对象而不使主键同名?
我有一个表示表的域对象类。该类与另一个表有关联,但源类的“属性”与目标类的“属性”命名不同,我不确定如何休眠映射它 下面是要设置的类的示例(一个CT到多个R实例):如何在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{
//这是下面属性引用中的属性
私有字符串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>