«Таблица не существует», когда я пытаюсь вставить данные с Hibernate

Я использую Hibernate framework как способ XML, в проекте Spring Boot. Я выбрал PostgreSQL в качестве СУБД. Я установил файлы конфигурации, но я получаю сообщение « не удалось извлечь ResultSet » всякий раз, когда я пытаюсь вставить данные. Исключение i; m получает

org.postgresql.util.PSQLException: ERROR: отношения «сотрудники» не существуют

Я тестировал соединение с Intellij, и все было в порядке. Я думаю, что что-то не так с моим файлом hbm.


hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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>
    <property name="dialect">org.hibernate.dialect.PostgreSQL94Dialect</property>
    <property name="connection.url">jdbc:postgresql://localhost:5432/MyDB</property>
    <property name="connection.username">postgres</property>
    <property name="connection.password"></property>
    <property name="connection.driver_class">org.postgresql.Driver</property>
    <mapping resource="employees.hbm.xml" />
</session-factory>


employees.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.company.entities.Employee" table="Employees" schema="public" >
    <id name="eid" type = "int" column = "eid">
        <generator class="increment"/>
    </id>
    <property name="name" column="name" type="java.lang.String" />
    <property name="description" column="description" type="java.lang.String" />
    <property name="salary" column="salary" type="java.lang.Double" />
</class>
</hibernate-mapping>

EmployeeDAO.java

@Repository
public class EmployeeDAO
{
static Session sessionObj;


private static SessionFactory buildSessionFactory()
{
    return new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
}

public void insertEmp(List<Employee> allEmployees)
{
    sessionObj = buildSessionFactory().openSession();
    sessionObj.beginTransaction();
    for (Employee emp: allEmployees)
    {
        sessionObj.save(prod);
    }
    sessionObj.getTransaction().commit();
    if(sessionObj != null)
    {
        sessionObj.close();
    }
}
}

postgresql,hibernate,spring-boot,

0

Ответов: 1


hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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>
    <property name="dialect">org.hibernate.dialect.PostgreSQL94Dialect</property>
    <property name="connection.url">jdbc:postgresql://localhost:5432/MyDB</property>
    <property name="connection.username">postgres</property>
    <property name="connection.password"></property>
    <property name="connection.driver_class">org.postgresql.Driver</property>
    <mapping resource="employees.hbm.xml" />
</session-factory>


employees.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.company.entities.Employee" table="Employees" schema="public" >
    <id name="eid" type = "int" column = "eid">
        <generator class="increment"/>
    </id>
    <property name="name" column="name" type="java.lang.String" />
    <property name="description" column="description" type="java.lang.String" />
    <property name="salary" column="salary" type="java.lang.Double" />
</class>
</hibernate-mapping>

EmployeeDAO.java

@Repository
public class EmployeeDAO
{
static Session sessionObj;


private static SessionFactory buildSessionFactory()
{
    return new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
}

public void insertEmp(List<Employee> allEmployees)
{
    sessionObj = buildSessionFactory().openSession();
    sessionObj.beginTransaction();
    for (Employee emp: allEmployees)
    {
        sessionObj.save(prod);
    }
    sessionObj.getTransaction().commit();
    if(sessionObj != null)
    {
        sessionObj.close();
    }
}
}
10
1 принят

в сообщении об ошибке упоминается «сотрудник», тогда как в вашем сопоставлении вы говорите «Сотрудник» ... я думаю, это может быть проблемой:

https://blog.xojo.com/2016/09/28/about-postgresql-case-sensitivity/


Файл employee.hbm.xml должен измениться с

<class name="com.company.entities.Employee" table="Employees" schema="public" >

в

<class name="com.company.entities.Employee" table="`Employees`" schema="public" >
PostgreSQL, спящий режим, весна-загрузки,
Похожие вопросы