gpt4 book ai didi

java - Hibernate 说 database.table 不存在

转载 作者:行者123 更新时间:2023-11-29 05:57:05 25 4
gpt4 key购买 nike

情况好的,所以我正在学习 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. 有趣的是,当我使用 workbench 在 mysql 中手动创建表时,hibernate 会删除它,因为当我使用 drop 命令时,它说该表不存在。

我无法弄清楚故障可能出在哪里(新手和互联网没有帮助)。请在评论中提及所需的任何其他详细信息。请帮忙!谢谢。

最佳答案

我让它起作用了,我不确定它是否是一个正确的答案,但既然它起作用了,我将它作为答案发布。我做了两项更改

  1. 我使用的是 hibernate 5.2.12 版,所以我将其更改为 4.2.0 并从另外两个文件夹中添加了 jars,而之前我没有(总而言之,我现在已经从 :optional 导入了 Jars , 在 hibernate 用户库中提供和需要的文件夹)
  2. 我忽略了一个 url 错误

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

在 dtd url 中我没有添加 www。应该是

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

所以,我的错。

无论如何,我们非常感谢有关改进此答案的评论以及它为何起作用。

关于java - Hibernate 说 database.table 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com