Отображение составного ключа с обоими элементами в качестве внешнего ключа - PullRequest
1 голос
/ 28 сентября 2011

У меня есть простое приложение Spring-Hibernate. У меня есть 3 класса урожая, рынка и фермера со структурой что-то вроде:

class crop  
{  
    private int cropId;  
}  
class market  
{   
    private int marketId;  
}  
class farmer   
{  
    private Crop crop;  
    private Market market;  
}

Таблица фермера имеет составной ключ {cropid, marketid}. Теперь, как мне сопоставить эту взаимосвязь с составным ключевым элементом cropid и marketid, ссылающимся на таблицу культур и рынка соответственно в файле .hbm.xml. Я совсем новичок в спячке и весне. Любые предложения будут очень полезны !!

1 Ответ

0 голосов
/ 28 сентября 2011

В файле 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...