Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
Александр_Алекс
7 / 4 / 1
Регистрация: 08.12.2013
Сообщений: 165
#1

Hibernate: не сохраняются в БД изменения сделанные во время транзакции - Java БД

13.12.2016, 11:21. Просмотров 366. Ответов 1
Метки нет (Все метки)

Здравствуйте.
Начал осваивать hibernate, и сразу застрял на такой вот штуке: не могу сохранить то, что делал в транзакции в базу.
Гуглил. Проблема идентична этой, но ее решение почему-то не работает у меня

вот моя сущность:
Кликните здесь для просмотра всего текста
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
import org.hibernate.annotations.OptimisticLockType;
 
import javax.persistence.*;
 
/**
 * Created by Joseph K on 12.12.2016.
 */
@Entity
@org.hibernate.annotations.Entity(optimisticLock = OptimisticLockType.ALL, dynamicUpdate = true)
@Table(name = "test_table", uniqueConstraints = {
        @UniqueConstraint(columnNames = "id")
})
public class Foo {
    private static final long serialVersionUID = -1798070786993154676L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    private Integer id;
 
    @Column(name = "int_col", nullable = false)
    private Integer intCol;
 
    @Column(name = "str_col", length = 100)
    private String strCol;
 
    public Foo() {
    }
 
    public Integer getIntCol() {
        return intCol;
    }
 
    public void setIntCol(Integer intCol) {
        this.intCol = intCol;
    }
 
    public String getStrCol() {
        return strCol;
    }
 
    public void setStrCol(String strCol) {
        this.strCol = strCol;
    }
 
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
}


вот класс hibernate util
Кликните здесь для просмотра всего текста
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
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
 
import java.io.File;
 
/**
 * Created by Joseph K on 12.12.2016.
 */
public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();
 
    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new AnnotationConfiguration().configure(
                    new File("hibernate.cfg.xml")).buildSessionFactory();
 
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
 
    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }
}


конфиг файл
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/hbnt</property>
        <property name="hibernate.connection.password">1234</property>
        <property name="hibernate.connection.username">postgres</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">create</property>
        <mapping class="Foo"></mapping>
    </session-factory>
</hibernate-configuration>


класс в котором я открываю сессию и выполняю транзакцию
Кликните здесь для просмотра всего текста
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
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
 
/**
 * Created by Joseph K on 12.12.2016.
 */
public class Test {
    public static void main (String[] args){
        //открываю сессию
        Session session = HibernateUtil.getSessionFactory().openSession();
        //начинаю транзакцию
        Transaction transaction = session.beginTransaction();
        //создаю сущность, добавляю данные
        Foo test = new Foo();
        test.setIntCol(4665);
        test.setStrCol("sdfsdf");
        //сохраняю объект
        session.save(test);
        //коммит
        transaction.commit();
        //закрываю сессию
        session.close();
        HibernateUtil.shutdown();
    }
}


Лог показывает мне такую строчку:
Hibernate: insert into test_table (int_col, str_col) values (?, ?)

Но в базу не вставляется ничего!

мне почему-то кажется, что я застрял на чем-то элементарном, просто уже глаз замылен и я в упор не вижу проблемы.
Буду признателен, если кто-то мне подскажет что я делаю не так. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2016, 11:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Hibernate: не сохраняются в БД изменения сделанные во время транзакции (Java БД):

hibernate. транзакции. Не могу понять, что пишут в документации - Java БД
Никак не могу понять смысл написанного в документации. Про транзакции там пишут буквально следующее: Как перевожу я: ...

Транзакции Hibernate - Java EE
Всем добрый день. Подскажите почему может не срабатывать транзакция &quot;update&quot; в хибернейт? добавление и удаление работает, а апдейт нет....

Hibernate транзакции - Java EE
Всем привет. Пытаюсь сделать транзакцию для своего сервера, но что-то не получается. Перелопатил кучу примеров и документации и всеравно не...

Hibernate транзакции - Java EE
Продолжаю мучить Hibernate Есть класс конфигурации package com.example.configuration; import...

Не применяются изменения сделанные в коде программы - C++
Есть очень простенькая программа написанная на C++ другим человеком. Открыв её у себя, появилось желание изменить надписи и т.п., но после...

.NET 4.x Как сохранять изменения сделанные в DataGrid в БД? - C# WPF
Создал БД, прикрутил ее к DataGrid вот так: private void Window_Loaded(object sender, RoutedEventArgs e) { ...

1
Александр_Алекс
7 / 4 / 1
Регистрация: 08.12.2013
Сообщений: 165
14.12.2016, 22:42  [ТС] #2
Кошмар.
Все работало, но строка вместо того что бы добавится новой, обновлялась существующая, а я этого не замечал.
Заметил попробовав на другом компьютере с пустой дб(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2016, 22:42
Привет! Вот еще темы с ответами:

Как отменить случайно сделанные изменения в реестре ? - Windows 8, 8.1
Хотел изменить имя пользователя через реестр, но тк у меня руки из одного места растут, то я нечаянно переименовал папку в regedit и не...

Почему на сайте не отображаются изменения, сделанные в CSS - HTML, CSS
Добавлено через 29 минут Ребята-форумчане, HTML &quot;не дружит&quot; с CSS , тк не изменяется страница после редактирования CSS ..похоже СSS не...

Сохранить изменения, сделанные в DataGridView, в БД, используя хранимую процедуру - C#
Есть DataGridView. Они берутся из БД без всяких заморочек. В DataGridView вводятся данные. Их нужно сохранить в БД. Сохранить можно...

Изменения формы, сделанные в визуальном редакторе, не вступают в силу - C#
Поменяла на форме расположение кнопок и их цвет. Запустила программку а в ней старое расположение кнопок. Сохранила, еще раз запустила...


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

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

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