JPA - связь многих со многими таблицы с составным ключом с самим собой - PullRequest
1 голос
/ 09 октября 2008

Я хотел бы создать связь таблицы «многие ко многим» (RoutePlace) с самим собой, используя аннотации JPA. Особенность таблицы, к которой я хочу присоединиться, состоит в том, что она имеет составной ключ.

пример: https://h4losw2.files.wordpress.com/2008/10/tables.png

alt text

Есть предложения?

Заранее спасибо

1 Ответ

2 голосов
/ 20 октября 2008

Я не уверен, правильно ли я понял ваш вопрос, но вы имеете в виду что-то вроде этого:

@IdClass(RoutePlacePK.class)
@Entity
public class RoutePlace {
    private Collection<RoutePlace> route;

    @ManyToMany(mappedBy = "place")
    public Collection<RoutePlace> getRoute() {
        return route;
    }

    public void setRoute(Collection<RoutePlace> route) {
        this.route = route;
    }

    private Collection<RoutePlace> place;

    @ManyToMany
    public Collection<RoutePlace> getPlace() {
        return place;
    }

    public void setPlace(Collection<RoutePlace> place) {
        this.place = place;
    }
}

Класс оболочки составного первичного ключа:

public class RoutePlacePK {
    private int routeID;
    private int placeID;

    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        RoutePlacePK that = (RoutePlacePK) o;

        if (placeID != that.placeID) return false;
        if (routeID != that.routeID) return false;

        return true;
    }

    public int hashCode() {
        int result;
        result = routeID;
        result = 31 * result + placeID;
        return result;
    }
}
...