Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @OneToMany / 8 сообщений из 8, страница 1 из 1
28.01.2013, 12:40:01
    #38127069
javabeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
Добрый день.
Есть таблица Station
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default| Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(250)| YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+

Есть таблица Route
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default| Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(250)| YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+

И связывающая их таблица Routes_Station
+--------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| route_id | int(11) | NO | MUL | NULL | |
| station_id | int(11) | NO | MUL | NULL | |
| order_number| int(11)| NO | | NULL | |
| id | int(11) | NO | PRI | NULL | |
+--------------+---------+------+-----+---------+-------+

Route.Class:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
@Entity
@Table(name = "route", catalog = "tablo")
public class Route implements java.io.Serializable {

    private Integer id;
    private String name;
    private Set routesStationses = new HashSet(0);

    public Route() {
    }

    public Route(String name, Set routesStationses) {
        this.name = name;
        this.routesStationses = routesStationses;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "name", length = 250)
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "route")   // было
    //@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "route", targetEntity = Route.class)
    public Set<Route> getRoutesStationses() {
        return this.routesStationses;
    }

    public void setRoutesStationses(Set routesStationses) {
        this.routesStationses = routesStationses;
    }
}




Station.Class:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
@Entity
@Table(name="station"
    ,catalog="tablo"
)
public class Station  implements java.io.Serializable {


     private Integer id;
     private String name;
     private Set<RoutesStations> routesStationses = new HashSet(0);
     private Set<Transfer> transfersForStationId1 = new HashSet(0);
     private Set<Transfer> transfersForStationId2 = new HashSet(0);

    public Station() {
    }

    public Station(String name, Set<RoutesStations> routesStationses, Set<Transfer> transfersForStationId1, Set<Transfer> transfersForStationId2) {
       this.name = name;
       this.routesStationses = routesStationses;
       this.transfersForStationId1 = transfersForStationId1;
       this.transfersForStationId2 = transfersForStationId2;
    }
   
     @Id @GeneratedValue(strategy=IDENTITY)
    
    @Column(name="id", unique=true, nullable=false)
    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    @Column(name="name", length=250)
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="station")
    public Set<RoutesStations> getRoutesStationses() {
        return this.routesStationses;
    }
    
    public void setRoutesStationses(Set<RoutesStations> routesStationses) {
        this.routesStationses = routesStationses;
    }
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="stationByStationId1")
    public Set<Transfer> getTransfersForStationId1() {
        return this.transfersForStationId1;
    }
    
    public void setTransfersForStationId1(Set<Transfer> transfersForStationId1) {
        this.transfersForStationId1 = transfersForStationId1;
    }
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="stationByStationId2")
    public Set<Transfer> getTransfersForStationId2() {
        return this.transfersForStationId2;
    }
    
    public void setTransfersForStationId2(Set<Transfer> transfersForStationId2) {
        this.transfersForStationId2 = transfersForStationId2;
    }

}



и RoutesStations.Class:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
@Entity
@Table(name = "routes_stations", catalog = "tablo")
public class RoutesStations implements java.io.Serializable {

    private int id;
    private Station station;
    private Route route;
    private int orderNumber;

    public RoutesStations() {
    }

    public RoutesStations(int id, Station station, Route route, int orderNumber) {
        this.id = id;
        this.station = station;
        this.route = route;
        this.orderNumber = orderNumber;
    }

    @Id
    @Column(name = "id", unique = true, nullable = false)
    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "station_id", nullable = false)
    public Station getStation() {
        return this.station;
    }

    public void setStation(Station station) {
        this.station = station;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "route_id", nullable = false)
    public Route getRoute() {
        return this.route;
    }

    public void setRoute(Route route) {
        this.route = route;
    }

    @Column(name = "order_number", nullable = false)
    public int getOrderNumber() {
        return this.orderNumber;
    }

    public void setOrderNumber(int orderNumber) {
        this.orderNumber = orderNumber;
    }
}




Но почему-то ругается:
авторnested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: domain.Route.route in domain.Route.routesStationses

Что не так с mappedBy?
...
Рейтинг: 0 / 0
28.01.2013, 12:44:26
    #38127082
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
Stationses :)

Код: java
1.
2.
3.
4.
5.
 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "route")   // было
    //@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "route", targetEntity = Route.class)
    public Set<Route> getRoutesStationses() {
        return this.routesStationses;
    }


Это значит что в Route должно быть свойство route, которое является ссылкой на текущую сущность. У вас в Route такого свойства нет вообще
...
Рейтинг: 0 / 0
28.01.2013, 17:40:55
    #38127683
javabeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
BlazkowiczStationses :)


Не доглядел за netbeans'ом. Исправил.

Blazkowicz
Код: java
1.
2.
3.
4.
5.
 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "route")   // было
    //@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "route", targetEntity = Route.class)
    public Set<Route> getRoutesStationses() {
        return this.routesStationses;
    }


Это значит что в Route должно быть свойство route, которое является ссылкой на текущую сущность. У вас в Route такого свойства нет вообще

На основании этой статьи правильно ли я понимаю, что в этом случае для организации двусторонней связи я должен указать, что "маппятся" значения из таблицы Routes_Station, т.е.:
Код: java
1.
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "routesStationses")



?
...
Рейтинг: 0 / 0
29.01.2013, 09:57:05
    #38128297
javabeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
Ой, с учетом того, что изменил, то
Код: java
1.
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "routesStations")
...
Рейтинг: 0 / 0
29.01.2013, 10:20:07
    #38128339
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
javabeginner,
не понял заголовок темы, если у тебя много-ко-много связь.
...
Рейтинг: 0 / 0
29.01.2013, 10:43:26
    #38128391
javabeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
Возможно, Вы правы. Дело в том, что я только изучаю связывание объектов в Hibenate.
Я создал таблицы в БД и средствами netbeans на основании схемы БД создал классы Route, Station и RoutesStations.
Между объектами Route и Station, действительно, связь многие-ко-многим. Но ведь между таблицами Route и RoutesStations связь один-ко-многим.
...
Рейтинг: 0 / 0
29.01.2013, 11:55:17
    #38128505
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
javabeginner,
1 к Много + 1 к Много <> М к М.
Лучше возьми пример М к М (тут или в сети) и разбери его.
...
Рейтинг: 0 / 0
31.01.2013, 12:09:28
    #38132022
javabeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate @OneToMany
Petro123,
Спасибо. Разобрался. Надо было не доверять netbeans'у.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @OneToMany / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]