• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JAVA/HIBERNATE Automatyczne generowanie kluczy

Object Storage Arubacloud
0 głosów
329 wizyt
pytanie zadane 21 sierpnia 2019 w Java przez Bartek Kotarski Początkujący (480 p.)

Dzień dobry,

Mam mały problem z auto-inkrementacją kluczy głównych w bazie MySql zarządzaną za pomocą Hibernate z poziomu Javy. Obecnie używam hibernate 5.4.2. Kiedy używam adnotacji @GeneratedValue to obiekt nie jest zapisywany w bazie. Jeżeli ręcznie przypiszę wartość liczbową do pola userId to obiekt jest zapisywany. Zależałoby mi, aby automatycznie inkrementowały się klucze bez ingerencji programisty. Wie ktoś jak to można naprawić ? 


import javax.persistence.*;
import java.io.Serializable;

@Entity
@Table(name = "USER")
public class User implements Serializable
{

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ")
    @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS")
    private long userId;

    @Column(nullable = false,unique = true)
    private String nick;

    @Column(nullable = false)
    private String password;

    public User() {
    }

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public String getNick() {
        return nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}


----------------------------------------------------------------
//Konfiguracja i zapis
public class Connection {

    private static SessionFactory sessionFactory;

    static
    {
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
        sessionFactory = new MetadataSources(serviceRegistry).addAnnotatedClass(User.class).addAnnotatedClass(Note.class).buildMetadata().buildSessionFactory();
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}


public class MainDao {

    private static Session session;

    public static void saveInDataBase(Serializable serializable)
    {
        try{
            session = Connection.getSessionFactory().openSession();
            session.beginTransaction();
            session.save(serializable);
            session.getTransaction().commit();

        }catch (Exception e)
        {
            session.getTransaction().rollback();
            e.getMessage();
        }
        finally {
            session.close();
        }

    }

}



----------------------------------------------------------------


<!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>
        <!-- JDBC Database connection settings -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/javabase?serverTimezone=UTC</property>
        <property name="connection.username">java</property>
        <property name="connection.password">password</property>
        <!-- JDBC connection pool settings ... using built-in test pool -->
        <property name="connection.pool_size">1</property>
        <!-- Select our SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!-- Echo the SQL to stdout -->
        <property name="show_sql">true</property>
        <!-- Set the current session context -->
        <property name="current_session_context_class">thread</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>
        <!-- dbcp connection pool configuration -->
        <property name="hibernate.dbcp.initialSize">5</property>
        <property name="hibernate.dbcp.maxTotal">20</property>
        <property name="hibernate.dbcp.maxIdle">10</property>
        <property name="hibernate.dbcp.minIdle">5</property>
        <property name="hibernate.dbcp.maxWaitMillis">-1</property>

    </session-factory>

</hibernate-configuration>

 

 

 

komentarz 21 sierpnia 2019 przez Aisekai Nałogowiec (42,190 p.)
A jakiś błąd rzuca? W catch wrzuć e.printStackTrace().
1
komentarz 22 sierpnia 2019 przez Bartek Kotarski Początkujący (480 p.)

Dziękuję! Faktycznie, dałem złe wyrzucanie błędów przez co nie wiedziałem gdzie jest błąd. Poniższej zamieszczam rozwiązanie: 
 

<property name="connection.pool_size">1</property>

na 

<property name="connection.pool_size">100</property>

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 312 wizyt
0 głosów
0 odpowiedzi 188 wizyt
pytanie zadane 8 marca 2019 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 231 wizyt
pytanie zadane 1 sierpnia 2017 w Java przez lewy Obywatel (1,260 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...