1

error: Caused by: java.sql.SQLSyntaxErrorException: Table 'project.playing' doesn't exist at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092) at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040) at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)

In eclipse using maven project trying to create a table(playing) in the existind mysql databse(project) using hibernate . entity class code:

package com.rj.hibtry.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "playing")
public class Users {

    @Id
    @Column(name = "user_id")
    int userId;

    @Column(name = "username")
    String username;

    @Column(name = "password")
    String password;

    @Column(name = "first_name")
    String firstName;

    @Column(name = "last_name")
    String lastName;


    public Users(String username, String password, String firstName, String lastName) {
        this.username = username;
        this.password = password;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public int getUserId() {
        return userId;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

    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;
    }

}

main method code:

package com.rj.hibtry;

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

import com.rj.hibtry.entity.Users;

public class App {

    public static void main(String[] args) {
          SessionFactory factory=new Configuration()
                  .configure("hibernate.cfg.xml")
                  .addAnnotatedClass(Users.class)
                  .buildSessionFactory();
          Session session=factory.getCurrentSession();
          try {
              // Create object of entity class type
              Users user = new Users("lj", "password", "firstName", "lastName");
              // Start transaction
              session.beginTransaction();
              // Perform operation
              session.save(user);
              // Commit the transaction 
              session.getTransaction().commit();
              System.out.println("Row added!");


        } finally {
            session.close();
            factory.close();
        }


      }
}

hibernate.cfg.xml codes:

<!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>

        <!-- Connection settings -->

        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
              <!-- Sample MySQL URL provided  -->  
        <property name="connection.url">jdbc:mysql://localhost:3306/project?serverTimezone=UTC</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="hbm2ddl.auto">create</property>

        <!-- Show SQL on console -->
        <property name="show_sql">true</property>



        <!--Setting Session context model -->
        <property name="current_session_context_class">thread</property>

    </session-factory>
</hibernate-configuration>

pkc456
  • 8,350
  • 38
  • 53
  • 109
R J
  • 23
  • 1
  • 3
  • Do the logs show any SQL that it's trying to run? – Yserbius Apr 24 '20 at 20:49
  • Apr Hibernate: drop table if exists playing Apr 25, 2020 12:18:12 PM [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@78a515e4] 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. Hibernate: create table playing (user_id integer not null, first_name varchar(255), last_name varchar(255), password varchar(255), username varchar(255), primary key (user_id)) type=MyISAM – R J Apr 25 '20 at 06:54
  • Hibernate: insert into playing (first_name, last_name, password, username, user_id) values (?, ?, ?, ?, ?) Apr 25, 2020 12:18:12 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 1146, SQLState: 42S02 Apr 25, 2020 12:18:12 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: Table 'project.playing' doesn't exist – R J Apr 25 '20 at 06:55

1 Answers1

1

People who are using MySQL above 4.0 version they need to change the dialect in the configuration file. "org.hibernate.dialect.MySQLDialect" will work till version 4.0, above that you need to use "org.hibernate.dialect.MySQL5Dialect"