Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
5 / 3 / 1
Регистрация: 12.05.2019
Сообщений: 201
1

Как правильно замапить аннотациями связь One-to-many Many-to-one

17.11.2019, 21:35. Показов 1179. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано: есть 2 обьекта. Rabbit и Note. Каждой ноте соответствует один Rabbit . Note может быть много у одного Rabbita

Цель: в класс Note должно подтягиваться Rabbit.name автоматически в поле Note.rabbitname
и при удалении Rabbit все Note что ему соответствуют тоже должны удалится.


до этого у меня работало с помощью
в Note:
<many-to-one name="rabbit" column="name" insert="false" update="false"
class="classes.Rabbit"
cascade="save-update"/>
+ в SQL:
FOREIGN KEY (`name`) REFERENCES `rabbit_table` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT

теперь пытаюсь изучить вариант с аннотациями.

выдает
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property: classes.Rabbit.id

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
@Entity
@Table(name = "rabbit_table")
public class Rabbit {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable=false)
    
    @ManyToOne(cascade = {CascadeType.REMOVE}, targetEntity=Note.class)
    @JoinColumn(name = "rabbitName", nullable=false)
    private int id;
    
    @Column(name = "name", nullable=false)  
    private String name;
    
    @Column(name = "sex", nullable=false)
    private int sex;
    
    @Column(name = "date_of_birth", nullable=false)
    private Date dateOfBirth;
    
    @Column(name = "count", nullable=false)
    private int count;
    
    @Column(name = "person_diary")
    private String personDiary;
    
    private int age;
    
    public Rabbit(String name, int sex, Date dateOfBirth, int count, String personDiary) {
        this.name = name;
        this.sex = sex;
        this.dateOfBirth = dateOfBirth;
        this.count = count;
        this.personDiary = personDiary;
    }
 
    public Rabbit() {
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public int getCount() {
        return count;
    }
 
    public void setCount(int count) {
        this.count = count;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Date getDateOfBirth() {
        return dateOfBirth;
    }
 
    public void setDateOfBirth(Date dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public int getSex() {
        return sex;
    }
 
    public void setSex(int sex) {
        this.sex = sex;
    }
 
    public String getPersonDiary() {
        return personDiary;
    }
 
    public void setPersonDiary(String personDiary) {
        this.personDiary = personDiary;
    }
 
    private int calculateRabbitAge(Date birthDate) {
    age=1
        return age;
    }
 
    @Override
    public String toString() {
        return "'" + name + "'" + "  " + (sex == 1 ? "wooman" : sex == 3 ? "little rabbit" : "man") + "     age: "
                + calculateRabbitAge(dateOfBirth) + " month     " + count + "  count";
    }
 
}
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
@Entity(name="note_table")
public class Note implements Comparable<Note> {
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id", nullable=false)
    private int id;
    
    @Column(name="name", nullable=false)
    @OneToMany (cascade = {CascadeType.REMOVE}, targetEntity=Rabbit.class, mappedBy = "id", orphanRemoval = true)
    private int rabbitName;
    
    @Column(name="text")
    private String text;
    
    @Column(name="date_note", nullable=false)
    private Date date;
    
    private Rabbit rabbit;
 
    public Note(int rabbitName, String text, Date date) {
        this.rabbitName = rabbitName;
        this.text = text;
        this.date = date;
    }
 
    public Note() {
    }
 
    public int getRabbitName() {
        return rabbitName;
    }
 
    public void setRabbitName(int rabbitName) {
        this.rabbitName = rabbitName;
    }
 
    public String getText() {
        return text;
    }
 
    public void setText(String text) {
        this.text = text;
    }
 
    public Date getDate() {
        return date;
    }
 
    public void setDate(Date date) {
        this.date = date;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public Rabbit getRabbit() {
        return rabbit;
    }
 
    @Override
    public int compareTo(Note note) {
        return (findDaysLeft() - note.findDaysLeft());
    }
 
    public int findDaysLeft() {
        daysLeft=1;
        return daysLeft;
    }
 
    @Override
    public String toString() {
        return id + ")  '" + rabbit.getName() + "' " + text + " data: " + date + " left " + findDaysLeft() + " day";
    }
 
    public void setRabbit(Rabbit rabbit) {
        this.rabbit = rabbit;
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2019, 21:35
Ответы с готовыми решениями:

Как правильно замапить класс в Hibernate
есть класс &quot;кролики&quot; у него есть name. Есть своя табличка с данными. name String и соответственно...

Как мне правильно реализовать связь между таблицами
Имеются такая вот схема данных, точнее ее часть (смотрите во вложениях) Не устраивает меня связь...

Как правильно реализовать связь между коллекциями Model и ViewModel?
Приветствую, разбираюсь в паттерне MVVM, подскажите, как правильно реализовать связь между...

Связь между таблицами(Главный-Подчиненный). Как правильно связать?
Добрый день. По какому принципу выбирается главная-таблица и подчиненная таблица? Например,...

1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.11.2019, 11:46 2
Цитата Сообщение от Sma6nta Посмотреть сообщение
@Column(s) not allowed on a @ManyToOne property: classes.Rabbit.id
1) вроде по-человечьи же говорит, что не так.
2) Я же тебе давал уже ссылку на https://vladmihalcea.com/ - там и смотри, как правильно
0
18.11.2019, 11:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2019, 11:46
Помогаю со студенческими работами здесь

UML и javascript, как правильно показать связь между объектами
Изучаю ООП и собственно сам UML Работаю с javascript. Сначала загружается Jquery,...

Обратная связь - как правильно добавить на сайт готовый скрипт
Хочу на сайт установить обратную связь. Скачал болванку. Вопрос такой куда закачивать папку с...

Как правильно установить связь клиента с сервером при помощи websock?
Всем доброе время суток!!! Помогите пожалуйста разобраться. Необходимо установить связь от...

Как правильно организовать связь: таблица Анкета и поле Рейтинг таблицы Передачи?
Мне нужно поместить среднее значение рейтинга, конкретной передачи, из таблицы Анкета в поле...

Как правильно создать хитрую связь между таблицами в другой базе данных?
Добрый день всем. Всю ситуацию в целом изобразил на рисунке ниже. Сейчас поясню детали. Итак,...

Sqlite3, связь один ко многим, как ускорить выборку по ключу или правильно написать select. join
вот так создается таблица: sqlite3_exec(db, &quot;CREATE TABLE IF NOT EXISTS lib (id INT PRIMARY KEY...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru