我有一个简单的Spring-Hibernate应用程序。 我有三类农作物,市场和农民,其结构类似于:
class crop
{
private int cropId;
}
class market
{
private int marketId;
}
class farmer
{
private Crop crop;
private Market market;
}
农民表有一个复合键{cropid,marketid}。
现在,如何将此关系映射到分别在cropid
文件中引用crop和market表的复合键元素marketid
和.hbm.xml
。
我对冬眠和春天都很陌生。任何建议都会有很大的帮助!!
答案 0 :(得分:0)
在farmer.hbm.xml中,你需要像这样composite-id
<composite-id class="FarmerId" mapped="true">
<key-property name="cropid"/>
<key-property name="marketid"/>
</composite-id>
并编写一个实现FarmerID
的课程Serializable
并覆盖equals()
和hashCode()
在equals()
中,您测试对象是否相同或具有相同的值并返回布尔值。在hashCode()
中,您生成一个哈希值并将其返回。
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if ((obj == null) || (obj.getClass() != this.getClass()))
return false;
FarmerID test = (FarmerID) obj;
boolean flagCrop = cropid == test.cropid;
boolean flagMarket = marketid == test.marketid;
return flagCrop && flagMarket;
}
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + cropid.hashCode();
hash = 31 * hash + marketid.hashCode();
return hash;
}