powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @OneToMany
8 сообщений из 8, страница 1 из 1
Hibernate @OneToMany
    #38127069
javabeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть таблица 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
Hibernate @OneToMany
    #38127082
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Hibernate @OneToMany
    #38127683
javabeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Hibernate @OneToMany
    #38128297
javabeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, с учетом того, что изменил, то
Код: java
1.
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "routesStations")
...
Рейтинг: 0 / 0
Hibernate @OneToMany
    #38128339
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javabeginner,
не понял заголовок темы, если у тебя много-ко-много связь.
...
Рейтинг: 0 / 0
Hibernate @OneToMany
    #38128391
javabeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, Вы правы. Дело в том, что я только изучаю связывание объектов в Hibenate.
Я создал таблицы в БД и средствами netbeans на основании схемы БД создал классы Route, Station и RoutesStations.
Между объектами Route и Station, действительно, связь многие-ко-многим. Но ведь между таблицами Route и RoutesStations связь один-ко-многим.
...
Рейтинг: 0 / 0
Hibernate @OneToMany
    #38128505
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javabeginner,
1 к Много + 1 к Много <> М к М.
Лучше возьми пример М к М (тут или в сети) и разбери его.
...
Рейтинг: 0 / 0
Hibernate @OneToMany
    #38132022
javabeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Спасибо. Разобрался. Надо было не доверять netbeans'у.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate @OneToMany
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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