Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
43 / 43 / 15
Регистрация: 10.09.2013
Сообщений: 293

Hibernate primary key

25.03.2014, 23:48. Показов 1080. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такая схема бд:

Вот классы:
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
package classes.hibernate;
 
import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
 
/**
 *
 * @author Andriy
 */
@Entity
@Table(name = "subcategories")
public class Subcategories implements Serializable {
 
    private int id;
    private Category category;
    private String name;
 
    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    @Column(name = "id")
    public int getId() {
        return id;
    }
 
    @OneToOne
    @Column(name = "category_id")
    @JoinColumn(name = "id")
    public Category getCategory() {
        return category;
    }
 
    public String getName() {
        return name;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public void setCategory_id(Category category) {
        this.category = category;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
}
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
package classes.hibernate;
 
import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
 
/**
 *
 * @author Andriy
 */
@Entity
@Table(name = "category")
public class Category implements Serializable {
 
    private int id;
    private String name;
 
    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    @Column(name = "id")
    public int getId() {
        return id;
    }
 
    @Column(name = "name")
    public String getName() {
        return name;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
}
Правильно ли создано отношение между этими классами?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2014, 23:48
Ответы с готовыми решениями:

Hibernate + Cannot add or update a child row: a foreign key constraint fails
Есть вот такая схема: Соответственно два класса: @Entity @Table(name = "item_orders") public class ItemOrders implements...

Как выделить key из <title>key</title>???
У меня есть строка, приходящая от сервера: &lt;blocks&gt;&lt;req&gt;yes&lt;/req&gt;&lt;sub&gt;basis&lt;/sub&gt;&lt;auto&gt; ...

Сущность БД и Primary key
Сгенерил сущность таблицы в БД. В этой таблице есть колонки с Primary Key. В сгенерированой сущности нет метода типа getColumnPK(). Можно...

1
43 / 43 / 15
Регистрация: 10.09.2013
Сообщений: 293
26.03.2014, 20:50  [ТС]
Немного переделал и вот что получилось:
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
import java.io.Serializable;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
 
/**
 *
 * @author Andriy
 */
@Entity
@Table(name = "Subcategories")
public class Subcategories implements Serializable {
 
    private int subcategories_id;
    private Category category;
    private String name;
 
    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    @Column(name = "subcategories_id")
    public int getSubcategories_id() {
        return subcategories_id;
    }
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "category_id", nullable = false)
    public Category getCategory() {
        return category;
    }
 
    public String getName() {
        return name;
    }
 
    public void setSubcategories_id(int subcategories_id) {
        this.subcategories_id = subcategories_id;
    }
 
    public void setCategory_id(Category category) {
        this.category = category;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
}
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
import java.io.Serializable;
import java.util.*;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
 
/**
 *
 * @author Andriy
 */
@Entity
@Table(name = "Category")
public class Category implements Serializable {
 
    private int category_id;
    private String name;
    private Set<Subcategories> subcategories = new HashSet<>(0);
 
    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    @Column(name = "category_id")
    public int getCategory_id() {
        return category_id;
    }
 
    @Column(name = "name")
    public String getName() {
        return name;
    }
 
    public void setCategory_id(int category_id) {
        this.category_id = category_id;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setSubcategories(Set<Subcategories> subcategories) {
        this.subcategories = subcategories;
    }
    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "category")
    public Set<Subcategories> getSubcategories() {
        return subcategories;
    }
 
}
hibernate.cfg.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/GigaByte</property>
    <property name="connection.username">root</property>
    <property name="connection.password">******</property>
    <property name="connection.pool_size">10</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.auto">update</property>
    <property name="hibernate.connection.autocommit">false</property>
    <property name="current_session_context_class">thread</property>
    <mapping class="classes.hibernate.Account"/>
    <mapping class="classes.hibernate.Category"/>
    <mapping class="classes.hibernate.Subcategories"/>
  </session-factory>
</hibernate-configuration>
Вот sql - команды которыми создаю эти таблицы:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE IF NOT EXISTS `category` (
  `category_id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
 
 
 
CREATE TABLE IF NOT EXISTS `subcategories` (
  `subcategories_id` INT NOT NULL AUTO_INCREMENT,
  `category_id` INT NOT NULL,
  `name` VARCHAR(45) NULL,
  PRIMARY KEY (`subcategories_id`),
  INDEX `category_id_idx` (`category_id` ASC),
  CONSTRAINT `category_id`
    FOREIGN KEY (`category_id`)
    REFERENCES `category` (`category_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);
И все равно наступает ошибка при конфигурации:
sessionFactory = new Configuration().configure().buildSession Factory();
В чем может быть проблема?

Добавлено через 1 час 56 минут
Хех) Проблема была в том, что я не определил метод getCategory().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2014, 20:50
Помогаю со студенческими работами здесь

[Hibernate] A Foreign key has the wrong number of column. should be 0
Ошибка: Initial SessionFactory creation failed.org.hibernate.AnnotationException: A Foreign key refering com.artmal.model.Teacher from...

JPA/Hibernate MappingException: Foreign key must have same number
Вот описание ошибки. org.hibernate.MappingException: Foreign key (FK_n9nvapt8aqpregmwepb98hjed:questions )) must have same number of...

Сохранение изменение и сохранение атрибута primary key таблицы базы даных через Netbeans
Подключил к приложению БД MS sql server 2005 через Persistence unite и связал jTable с таблицей БД Personals. Далее создал кнопку сохранить...

Hibernate Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
Доброго времени суток. Сталкиваюсь со всякими ошибками при добавлении данных в свою mysql бд. Вот код ошибки Exception in thread...

JDBC SQL PRIMARY KEY
Есть такой код. Создаю базу, добавляю данные. ID у меня указан как первичный ключ и должен быть уникальным. Вроде как-то можно настроить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru