Home > front end >  Inserting a new row in my table not working
Inserting a new row in my table not working

Time:01-07

Main

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import javax.persistence.EntityManager;
import model.Companie;
import repository.CompanieRepository;

import java.util.UUID;

public class Main
{
    private static final SessionFactory sessionFactory;
    private static final EntityManager entityManager;

    static
    {
        Configuration configuration = new Configuration()
                .configure("hibernate.cfg.xml")
                .addAnnotatedClass(Companie.class);

        sessionFactory = configuration.buildSessionFactory();
        entityManager = sessionFactory.createEntityManager();
    }

    public static void main(String[] args)
    {
        CompanieRepository companieRepository = new CompanieRepository(entityManager);
        Session session = sessionFactory.openSession();
        Companie comp = new Companie(26, "some name", "some another thing", "that thing");
        entityManager.persist(comp);
        session.close();

        System.out.println();
    }
}

Company class

package model;

import lombok.Data;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.util.UUID;

@Entity
@Data
public class Companie
{
//    @Id
//    @GeneratedValue(generator = "UUID")
//    @GenericGenerator(name = "id", strategy = "org.hibernate.id.UUIDGenerator")
//    @Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
//    private UUID id;
    @Id
    private int id;
    private String nume;

    @Column(name = "cod_fiscal")
    private String codFiscal;

    @Column(name = "nr_registru_comertului")
    private String nrRegistruComertului;

    public Companie()
    {
    }

    public Companie(int id, String nume, String codFiscal, String nrRegistruComertului)
    {
        this.id = id;
        this.nume = nume;
        this.codFiscal = codFiscal;
        this.nrRegistruComertului = nrRegistruComertului;
    }
}

Output

"C:\Program Files\Eclipse Adoptium\jdk-17.0.1.12-hotspot\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.2.3\lib\idea_rt.jar=49640:C:\Program Files\JetBrains\IntelliJ IDEA 2021.2.3\bin" -Dfile.encoding=UTF-8 -classpath D:\2xProjects\JavaPr\ContaApp\target\classes;C:\Users\Kentryx\.m2\repository\mysql\mysql-connector-java\8.0.25\mysql-connector-java-8.0.25.jar;C:\Users\Kentryx\.m2\repository\com\google\protobuf\protobuf-java\3.11.4\protobuf-java-3.11.4.jar;C:\Users\Kentryx\.m2\repository\org\hibernate\hibernate-core\5.6.1.Final\hibernate-core-5.6.1.Final.jar;C:\Users\Kentryx\.m2\repository\org\jboss\logging\jboss-logging\3.4.2.Final\jboss-logging-3.4.2.Final.jar;C:\Users\Kentryx\.m2\repository\javax\persistence\javax.persistence-api\2.2\javax.persistence-api-2.2.jar;C:\Users\Kentryx\.m2\repository\net\bytebuddy\byte-buddy\1.11.20\byte-buddy-1.11.20.jar;C:\Users\Kentryx\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\Kentryx\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\1.1.1.Final\jboss-transaction-api_1.2_spec-1.1.1.Final.jar;C:\Users\Kentryx\.m2\repository\org\jboss\jandex\2.2.3.Final\jandex-2.2.3.Final.jar;C:\Users\Kentryx\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\Kentryx\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\Kentryx\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\Kentryx\.m2\repository\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;C:\Users\Kentryx\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.1\jaxb-runtime-2.3.1.jar;C:\Users\Kentryx\.m2\repository\org\glassfish\jaxb\txw2\2.3.1\txw2-2.3.1.jar;C:\Users\Kentryx\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.7\istack-commons-runtime-3.0.7.jar;C:\Users\Kentryx\.m2\repository\org\jvnet\staxex\stax-ex\1.8\stax-ex-1.8.jar;C:\Users\Kentryx\.m2\repository\com\sun\xml\fastinfoset\FastInfoset\1.2.15\FastInfoset-1.2.15.jar;C:\Users\Kentryx\.m2\repository\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar Main
Jan 06, 2022 5:15:55 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate ORM core version 5.6.1.Final
Jan 06, 2022 5:15:55 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
Jan 06, 2022 5:15:56 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Jan 06, 2022 5:15:56 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/contabilitate]
Jan 06, 2022 5:15:56 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {password=****, user=clientDragos}
Jan 06, 2022 5:15:56 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Jan 06, 2022 5:15:56 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Jan 06, 2022 5:15:56 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
Jan 06, 2022 5:15:56 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@44784e2f] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Jan 06, 2022 5:15:56 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]

Process finished with exit code 0

I have a problem that I can't solve at all. I'm new to hibernate. I want to insert a new row in my database. The table is created, if I run it for the first time everything goes just fine with the creation of the table and the columns. After that, when I try to insert a row my database is not updated. Java is not inserting anything.

PS: I tried to insert a new row in MySQL Workbench at it worked just fine, the problem is that in Java it won't do the trick.

PSS: I tried another solution: session.save(Object o) etc. Nothing worked

CodePudding user response:

Because you forget to start the transaction to do your work. You have to commit the transaction to confirm saving your changes to DB.

If you are using the native Hibernate API , the codes should look likes:

Session session = sessionFactory.openSession();
session.getTransaction().begin();
session.persist(comp);
session.getTransaction().commit();

If you are using JPA API , the codes should like likes :

EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
em.persist(comp);
em.getTransaction().commit();
  •  Tags:  
  • Related