Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/65: Рейтинг темы: голосов - 65, средняя оценка - 4.74
4 / 4 / 2
Регистрация: 03.02.2013
Сообщений: 31

Почему Hibermate не создает таблицы?

03.10.2015, 19:52. Показов 12240. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем изучаю Hibernate. Пытаюсь создать таблицы в БД, вроде все сделал как в туториале, но записей о создании таблиц нет. Вот что выдает в консоли.
Кликните здесь для просмотра всего текста
XML
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
окт 02, 2015 6:08:58 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.0.1.Final}
окт 02, 2015 6:08:58 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
окт 02, 2015 6:08:58 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
окт 02, 2015 6:08:58 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.0.Final}
окт 02, 2015 6:08:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
окт 02, 2015 6:08:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/mydbtest]
окт 02, 2015 6:08:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=root, password=****}
окт 02, 2015 6:08:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
окт 02, 2015 6:08:58 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
окт 02, 2015 6:08:59 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
окт 02, 2015 6:08:59 PM org.hibernate.envers.boot.internal.EnversServiceImpl configure
INFO: Envers integration enabled? : true
окт 02, 2015 6:09:00 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000227: Running hbm2ddl schema export
окт 02, 2015 6:09:00 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete


Файл конфигов hibernate.cfg.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydbtest</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.hbm2ddl.auto">create</property>
        <property name="hibernate.show_sql">true</property>
 
        <mapping class="models.User"/>
        <mapping class="models.Order"/>
        <mapping class="models.Product"/>
        <mapping class="models.ProductCategory"/>
        <mapping class="models.Role"/>
    </session-factory>
</hibernate-configuration>


Код класса HibernateUtil
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
 
public class HibernateUtil {
    private static SessionFactory sessionFactory = null;
 
    static {
        Configuration cfg = new Configuration().configure();
        StandardServiceRegistryBuilder builder =  new StandardServiceRegistryBuilder()
                .applySettings(cfg.getProperties());
 
        sessionFactory = cfg.buildSessionFactory(builder.build());
    }
 
    public static SessionFactory getSessionFactory(){
        return  sessionFactory;
    }
}


Код класса User
Кликните здесь для просмотра всего текста
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
package models;
 
import javax.persistence.*;
 
/**
 * Created by Николай on 30.09.2015.
 */
 
@Entity
@Table (name = "user")
public class User extends Model{
 
    @Column (name = "age")
    private int age;
 
    public int getAge() {
        return age;
    }
 
    public String getFirstName() {
 
        return firstName;
    }
 
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
 
    public String getLastName() {
        return lastName;
    }
 
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
 
    @Column (name = "firstName")
    private String  firstName;
 
    @Column (name = "lastName")
    private String lastName;
 
    @OneToOne
    @PrimaryKeyJoinColumn
    private Role role;
 
    public Role getRole() {
        return role;
    }
 
    public void setRole(Role role) {
        this.role = role;
    }
 
    public User(long id){
        super(id);
    }
 
    public User(){
        super();
    }
}


Код класса Main
Кликните здесь для просмотра всего текста
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
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
 
import java.util.List;
 
/**
 * Created by Николай on 30.09.2015.
 */
public class Main {
    public static void main(String[] args){
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        /*Session session = sessionFactory.openSession();
        List<Object> products = null;
 
        try{
            session.beginTransaction();
 
            SQLQuery queryUpdate = session.createSQLQuery("UPDATE users SET name = " +
                    "'Petr' WHERE id = '3'");
            queryUpdate.executeUpdate();
 
            SQLQuery query = session.createSQLQuery("SELECT * FROM users");
            products = query.list();
            for(Object o : products){
                System.out.println(o.toString());
            }
            session.getTransaction().commit();
        }
        catch (Exception e){
            session.getTransaction().rollback();
            e.printStackTrace();
        }
        finally {
            session.close();
            sessionFactory.close();
        }*/
    }
}


Использую СУБД MySQL.

Самое главное, создал таблицы в MySQL workbench, делаю к ним запросы с помощью hibernate и все нормально работает, но таблицы создавать не хочет, создавал новый проект и делал все с нуля, все равно не помогло.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.10.2015, 19:52
Ответы с готовыми решениями:

Не создает все таблицы
В общем нужно считать JSON файл, в нем хранятся данные о стране и городах которые есть там. Потом занести все в локальную БД. Такой...

Почему не создает дочернюю форму?
При попытке создать дочернюю форму выкидывает вот такое окно: http://i068.***********/1001/e1/c767ccb0f875.jpg кто-нить знает как...

PHP. Почему не создает подкатегории?
if (strpos(trim($_POST),&quot;/&quot;)===FALSE){ mkdir(&quot;site/&quot;.trim($_POST), 0777); } else{ $for_cr = explode(&quot;/&quot;,trim($_POST)); ...

12
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
03.10.2015, 20:06
ммм... А вы уверены что он должен создавать их сам? Пользовался старой (относительно сегодняшней) версией Hibermate - та ничего не умела создавать.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.10.2015, 20:08
GerNik, сами создавайте таблицы. Автосоздание таблиц не рекомендуется. К тому же если вы потом будите что-то добавлять\убирать придется сносить всю схему со всеми данными.
1
4 / 4 / 2
Регистрация: 03.02.2013
Сообщений: 31
03.10.2015, 22:09  [ТС]
Я делал все как в этом видео http://www.youtube.com/watch?v... HwNtxiMf-0

Там в консоли черными буквами выходили записи о создании таблиц, но у меня этого не было.

KEKCoGEN, а как тогда создавать таблицы? Я же как раз класс User описал с аннотациями, чтобы hibernate создал по ним таблицы. Тогда для чего вообще эти аннотации нужны?

Добавлено через 24 минуты
UI-Maker, а как тогда создавать таблицы? С помощью SQL запроса или MySQL workbench?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.10.2015, 22:17
Цитата Сообщение от GerNik Посмотреть сообщение
а как тогда создавать таблицы?
руками в клиенте БД

Цитата Сообщение от GerNik Посмотреть сообщение
Тогда для чего вообще эти аннотации нужны?
Для меппинга данных из БД. В вашем случае они ненужны т.к повторяют имена полей.
1
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
03.10.2015, 22:26
Делаем файл Schema.sql создающий/удаляющий таблицы/колонки. Программист добавивший в класс (или сделавший новый класс) добавляет соответствующие строки в конец файла.
1
4 / 4 / 2
Регистрация: 03.02.2013
Сообщений: 31
03.10.2015, 22:26  [ТС]
UI-Maker, а как тогда создавать таблицы? С помощью SQL запроса или MySQL workbench?
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
03.10.2015, 22:30
эм... Запрос создающий таблицу или добавляющий колонку знаете как писать? %)
Ну вот его в конец файла добавлять. Можно писать развёрнуто, с проверкой а не есть ли уже такая таблица/колонка.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.10.2015, 22:31
Цитата Сообщение от UI-Maker Посмотреть сообщение
Программист добавивший в класс (или сделавший новый класс) добавляет соответствующие строки в конец файла.
для этого уже давно существуют более правильные и надажные решения. Например http://flywaydb.org/
1
4 / 4 / 2
Регистрация: 03.02.2013
Сообщений: 31
03.10.2015, 22:37  [ТС]
UI-Maker, ну это понятно, с помощью запроса создавать таблицы умею, вот только тогда зачем в файле
hibernate.cfg.xml это свойство hibernate.hbm2ddl.auto? Вроде как оно отвечает за создание таблиц.

ПС Заранее извиняюсь, что туплю, просто хочется понять, как правильно сделать.
ППС Вроде как сайт лагает немного, сообщение по 2 раза посылаются
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.10.2015, 22:46
Цитата Сообщение от GerNik Посмотреть сообщение
hibernate.cfg.xml это свойство hibernate.hbm2ddl.auto? Вроде как оно отвечает за создание таблиц.
http://stackoverflow.com/quest... at-they-do
1
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 3
26.10.2015, 14:44
Было подобное, только не с таблицами.
Попробуй изменить создание сессии на:

Java
1
2
3
4
5
factory = new Configuration()
                .configure() 
                .buildSessionFactory();
 
Session session=factory.openSession();
и т.д.

Что скажет?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
27.10.2015, 15:59
Вы после запуска гляньте в вокбенче, точно ли нету таблиц? Такое ощущение, что таблицы создаются, а проблема всего лишь в логировании.

Добавлено через 3 минуты
Попробуйте подключить log4j
в мавен добавьте:
XML
1
2
3
4
5
6
7
8
9
<properties>
    <log4j.version>1.2.17</log4j.version>
</properties>
 
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>${log4j.version}</version>
</dependency>
И в папке src/main/resources создайте файл log4j.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%p %c: %m%n"/>
        </layout>
    </appender>
    <root>
        <priority value="info"/>
        <appender-ref ref="console"/>
    </root>
</log4j:configuration>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2015, 15:59
Помогаю со студенческими работами здесь

Почему Микротик сам создает правила?
У меня микротик на Firewall-Nat сам создает правило, уже несколько раз удалю еще через некоторые время появиться эти правило на...

Почему вылетает с ошибкой, а не создает два
Почему вылетает с ошибкой? На VBA модуль переписывал с Pascal-евского оригинального варианта (моего). Немного о модуле: Модуль...

SQL не создает таблицы в новой БД
Всем привет, я хочу изучать С#. На данный момент от языка хочу получить знания которые сделают возможным написание сложных сайтов как...

Программа сама создает таблицы
Съинтегрировал gwt spring и hibernate, по началу не работало потому что выдавало ошибку &quot;таблица ecmproduct_components не...

Почему однопоточное приложение создает несколько потоков
Оконное однопоточное приложение WinApi создает кроме главного еще 4 рабочих потока.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru