Форум программистов, компьютерный форум CyberForum.ru

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

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

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

13.12.2016, 11:21. Просмотров 262. Ответов 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 (?, ?)

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

мне почему-то кажется, что я застрял на чем-то элементарном, просто уже глаз замылен и я в упор не вижу проблемы.
Буду признателен, если кто-то мне подскажет что я делаю не так. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2016, 11:21     Hibernate: не сохраняются в БД изменения сделанные во время транзакции
Посмотрите здесь:
hibernate. транзакции. Не могу понять, что пишут в документации Java БД
Транзакции в JavaFX-приложении Java БД
Java БД Что такое дистрибутивные транзакции?
Java БД Hibernate
hibernate Java БД
Java БД Java + Hibernate
Конфигурирование Hibernate Java БД
Hibernate search Java БД
Hibernate книга Java БД
Java БД Hibernate or spring
Java БД Hibernate - маппинг
Java БД Generic и Hibernate

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Александр_Алекс
6 / 3 / 1
Регистрация: 08.12.2013
Сообщений: 153
14.12.2016, 22:42  [ТС]     Hibernate: не сохраняются в БД изменения сделанные во время транзакции #2
Кошмар.
Все работало, но строка вместо того что бы добавится новой, обновлялась существующая, а я этого не замечал.
Заметил попробовав на другом компьютере с пустой дб(
Yandex
Объявления
14.12.2016, 22:42     Hibernate: не сохраняются в БД изменения сделанные во время транзакции
Ответ Создать тему
Опции темы

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