Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java и базы данных
Войти
Регистрация
Восстановить пароль
 
Dzigar
2 / 2 / 14
Регистрация: 02.11.2011
Сообщений: 100
#1

Объединение нескольких таблиц используя Hibernate annotation - Java БД

31.12.2013, 03:31. Просмотров 1494. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Я хочу сделать Join 3 таблиц сразу используя аннотации, но что то у меня не получается.
У меня есть 3 сущности, их код я привожу ниже.
Я хочу создать таблицу "users_estimates_photo" в которой будут хранится estimation_id и user_id.
Когда я делаю
Java
1
estimation.setUser(user)
запись идет. Но когда я в таблицу "estimates_photo", в которой буду хранится "estimation_id" и "photo_id", запись никак не проходит, всегда кидает java.sql.SQLException: Field 'users_estimaties_photo_id' doesn't have a default value. Я создавал таблицу без этой колонки, она добавляется автоматом, не могу понять почему.

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.selfmash.model;
 
import java.io.Serializable;
import java.util.List;
import java.util.Set;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
 
@Entity
@Table(name = "selfshots")
public class Photo implements Serializable {
 
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true)
    private int id;
 
    @Column(name = "name", nullable = false)
    private String name;
 
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "users_photos", joinColumns = { @JoinColumn(name = "photo_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") })
    private User user;
 
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(name = "estimates_photo", joinColumns = { @JoinColumn(name = "photo_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "estimation_id", referencedColumnName = "id") })
    private Set<Estimation> estimations;
 
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
 
    /**
     * @param id
     *            the id to set
     */
    public void setId(int id) {
        this.id = id;
    }
 
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
 
    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
 
    /**
     * @return the user
     */
    public User getUser() {
        return user;
    }
 
    /**
     * @param user
     *            the user to set
     */
    public void setUser(User user) {
        this.user = user;
    }
 
    /**
     * @return the estimations
     */
    public Set<Estimation> getEstimations() {
        return estimations;
    }
 
    /**
     * @param estimations
     *            the estimations to set
     */
    public void setEstimations(Set<Estimation> estimations) {
        this.estimations = estimations;
    }
 
}
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package com.selfmash.model;
 
import java.io.Serializable;
import java.util.Set;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
 
@Entity
@Table(name = "users")
public class User implements Serializable {
 
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
 
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
 
    @Column(name = "login")
    private String login;
 
    @Column(name = "password")
    private String password;
 
    @Column(name = "name")
    private String name;
 
    @Column(name = "lastname")
    private String lastname;
 
    @Column(name = "email")
    private String email;
 
    @OneToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "user_roles", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") })
    private Role role;
 
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "users_photos", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "photo_id", referencedColumnName = "id") })
    private Set<Photo> selfShot;
 
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "users_estimates_photo", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "estimation_id", referencedColumnName = "id") })
    private Set<Estimation> estimation;
 
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    public String getLogin() {
        return login;
    }
 
    public void setLogin(String login) {
        this.login = login;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public Role getRole() {
        return role;
    }
 
    public void setRole(Role role) {
        this.role = role;
    }
 
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
 
    /**
     * @param name
     *            the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
 
    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }
 
    /**
     * @param email
     *            the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }
 
    /**
     * @return the lastname
     */
    public String getLastname() {
        return lastname;
    }
 
    /**
     * @param lastname
     *            the lastname to set
     */
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
 
    /**
     * @return the selfShot
     */
    public Set<Photo> getSelfShot() {
        return selfShot;
    }
 
    /**
     * @param selfShot
     *            the selfShot to set
     */
    public void setSelfShot(Set<Photo> selfShot) {
        this.selfShot = selfShot;
    }
 
    /**
     * @return the estimation
     */
    public Set<Estimation> getEstimation() {
        return estimation;
    }
 
    /**
     * @param estimation
     *            the estimation to set
     */
    public void setEstimation(Set<Estimation> estimation) {
        this.estimation = estimation;
    }
 
}
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package com.selfmash.model;
 
import java.io.Serializable;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
 
@Entity
@Table(name = "estimation")
public class Estimation implements Serializable {
 
    /**
     * 
     */
    private static final long serialVersionUID = 2564183876125611370L;
 
    @Id
    @Column(name = "id", unique = true)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
 
    @Column
    private float estimation;
 
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "users_estimates_photo", joinColumns = { @JoinColumn(name = "estimation_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") })
    private User user;
 
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinTable(name = "estimates_photo", joinColumns = { @JoinColumn(name = "estimation_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "photo_id", referencedColumnName = "id") })
    private Photo photo;
 
    public Estimation() {
        // TODO Auto-generated constructor stub
    }
 
    public Estimation(float estimation) {
        this.estimation = estimation;
    }
 
    /**
     * @return the estimation
     */
    public float getEstimation() {
        return estimation;
    }
 
    /**
     * @param estimation
     *            the estimation to set
     */
    public void setEstimation(float estimation) {
        this.estimation = estimation;
    }
 
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
 
    /**
     * @param id
     *            the id to set
     */
    public void setId(int id) {
        this.id = id;
    }
 
    /**
     * @return the users
     */
    public User getUser() {
        return user;
    }
 
    /**
     * @param users
     *            the users to set
     */
    public void setUser(User user) {
        this.user = user;
    }
 
    /**
     * @return the photos
     */
    public Photo getPhoto() {
        return photo;
    }
 
    /**
     * @param photos
     *            the photos to set
     */
    public void setPhoto(Photo photo) {
        this.photo = photo;
    }
 
}

http://www.cyberforum.ru/java-database/thread1889647.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2013, 03:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объединение нескольких таблиц используя Hibernate annotation (Java БД):

Связка таблиц Hibernate
Добрый день, столкнулся вот с какой проблемой. У меня есть 2 сущности: Folder и...

Сложный запрос в hibernate используя criteria
Я,только решил освоить hibernate по этому сильно не бранитесь. Задача...

Как сделать связи между таблицами, используя Hibernate
Сделал проект, Maven пользуюсь Hibernate, как сказать пользуюсь учусь. Я не...

Объединение нескольких классов в один
(Честно говоря тему не смог точно сформулировать) В общем суть проблемы...

Написание запросов на соединение нескольких таблиц с jpa
Здравствуйте! Подскажите пожалуйста как такой запрос написать с помощью jpa:...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2013, 03:31
Привет! Вот еще темы с решениями:

Выборка из нескольких таблиц с одинаковыми названиями колонок
Здравствуйте! Вобщем имеется 3 таблицы. Message, Status, Role. У таблиц Status,...

Получение имен столбцов из нескольких таблиц в JTable
Доброе утро! Суть такова: Я получаю метаданные (получаю столбцы)...

Hibernate Annotation
Помогите связать таблицы : билеты на самолет, билеты на поезд, пассажир,...

Hibernate и join нескольких таблиц
Добрый вечер. Есть три класса. Юзер, роль, бонус. Нужно связать через хибернейт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru