Ситуация Хорошо, поэтому я изучаю 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
я пробовал
<property name="hibernate.hbm2ddl.auto">update</property>
Я не могу понять, где может быть глюк (новичкам и интернету не помогли). Пожалуйста, укажите дополнительные сведения, необходимые в комментариях. Пожалуйста помоги! Благодарю.
Я сделал это сработало, я не уверен, что это правильный ответ, но поскольку он получил его работу, я отправляю его как ответ. Я сделал две перемены
version 5.2.12
поэтому я изменил его на 4.2.0 и добавил банки из двух других папок, которые раньше у меня не были (в итоге я импортировал Jars из: необязательной, предоставленной и требуемой папки в библиотеке hibernate)Я упустил ошибку 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">'
Итак, моя ошибка.
В любом случае, комментарии относительно улучшения этого ответа и того, почему он сделал это, глубоко оценены.
добавьте другую автоматическую опцию спящего режима,
Использовать вместо create
, update
или create-drop
<property name="hibernate.hbm2ddl.auto">update</property>
или же
<property name="hibernate.hbm2ddl.auto">create-drop</property>
Вы можете узнать больше об этом здесь