Hibernate говорит, что database.table не существует

0

Ситуация Хорошо, поэтому я изучаю Hibernate (от 2 дней так прошу прощения), я использую базу данных mysql и просто пытаюсь создать таблицу Employee и сделать запись в базе данных (демонстрация).

Вот коды

POJO:

package com.sopra.pojo;
import javax.persistence.*;
@Entity
@Table(name = "EMPLOYEE")
public class Employee {
    @Id
    private int Id;
    private String firstName;
    private String lastName;
    private int salary;

    public int getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

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

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

}

hibernate.cfg.xml, который находится в src

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">password</property>
        <property name="hibernate.connection.pool_size">1</property>
        <property name="hibernate.current_session_context_class">thread</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name = "hibernate.hbm2ddl.auto">create</property>

        <mapping class="com.sopra.pojo.Employee" />
    </session-factory>
</hibernate-configuration>

EmployeeDBManager.java

package com.sopra.pojo;

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

public class EmployeeDBManager {
    public static void main(String[] args) {
        Employee e = new Employee();
        e.setFirstName("Salim");
        e.setId(672);
        e.setLastName("Shamim");
        e.setSalary(266);
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session =  sessionFactory.openSession();
        Transaction tx =  session.beginTransaction();

        session.persist(e);

        tx.commit();

        session.close();
    }
}

Ошибка

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.employee' doesn't exist

я пробовал

  1. используйте это в файле cfg: <property name="hibernate.hbm2ddl.auto">update</property>
  2. Что интересно, когда я вручную создаю таблицу в mysql с помощью workbench, hibernate действительно ее отбрасывает, как при использовании команды drop, она говорит, что таблица не существует.

Я не могу понять, где может быть глюк (новичкам и интернету не помогли). Пожалуйста, укажите дополнительные сведения, необходимые в комментариях. Пожалуйста помоги! Благодарю.

  • 1
    Возможная копия таблицы гибернации не существует ошибка
  • 0
    Возможно, не так, как я пробовал это решение и не сработало @FrancisBartkowiak
Показать ещё 3 комментария
Теги:
hibernate

2 ответа

1
Лучший ответ

Я сделал это сработало, я не уверен, что это правильный ответ, но поскольку он получил его работу, я отправляю его как ответ. Я сделал две перемены

  1. Я использовал hibernate version 5.2.12 поэтому я изменил его на 4.2.0 и добавил банки из двух других папок, которые раньше у меня не были (в итоге я импортировал Jars из: необязательной, предоставленной и требуемой папки в библиотеке hibernate)
  2. Я упустил ошибку URL-адреса, которая была

    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    

В URL-адресе dtd я не добавил www. Это должно было быть

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">'

Итак, моя ошибка.

В любом случае, комментарии относительно улучшения этого ответа и того, почему он сделал это, глубоко оценены.

0

добавьте другую автоматическую опцию спящего режима,

Использовать вместо create, update или create-drop

<property name="hibernate.hbm2ddl.auto">update</property>  

или же

 <property name="hibernate.hbm2ddl.auto">create-drop</property>

Вы можете узнать больше об этом здесь

  • 0
    Нет, он попробовал и снова бесполезно.
  • 0
    Как называется таблица в базе данных? Проверьте на любые опечатки.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню