Hibernate映射失败 - 不知道错误发生的位置

时间:2015-09-06 20:32:01

标签: java xml hibernate maven

我查看堆栈溢出以查找会导致此问题的不同原因和排列,但我不认为这种情况已被提出。

错误

我试图在Maven上使用带有spring MVC的hibernate,并且由于某种原因,hibernate.cfg.xml的映射没有正确映射(我检查了我的路径,我认为它是正确的)。我收到以下错误:

org.hibernate.MappingException: Unknown entity: com.firstspringmvcproject.introcontroller.Entry

使用此映射:

<mapping class="com.firstspringmvcproject.introcontroller.Entry" />

在我的hibernate.cfg.xml文件中。

文件结构

这是我的文件结构:

来自项目资源管理器

enter image description here

来自导航器

enter image description here

对于那些感兴趣的人 - 一些特定的文件:

hibernate.cfg.xml中

<!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="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.username">NAMEHERE</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/hibernatedb</property>

        <property name="connection_pool_size">1</property>

        <property name="hbm2ddl.auto">create</property>

        <property name="show_sql">true</property>
        <property name="hibernate.current_session_context_class">thread</property>
        <mapping class="com.firstspringmvcproject.introcontroller.Entry" />

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

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>FirstSpringMVCProject</display-name>

  <servlet>
    <!--  name of the servlet will add a -servlet postfix 
        unless otherwise specified. -->
    <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class> <!-- is the class for which to find the servlet -->
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

用于休眠的非常简单的POJO

package com.firstspringmvcproject.introcontroller;

import java.util.Date;

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

@Entity
@Table(name="ENTRY_DATE")
public class Entry {

    @Id @GeneratedValue
    int entryInfo;
    Date date;

    public int getEntryInfo() {
        return entryInfo;
    }

    public void setEntryInfo(int entryInfo) {
        this.entryInfo = entryInfo;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

}

我认为可能是错误

  • 我想这可能是因为我的hibernate.cfg.xml找不到src / main / resources(出于某种原因,我的项目没有这个),所以它无法找到豆子。这就是我创建项目的方式:new-&gt;动态Web项目,创建后: - &gt; configure - &gt;配置Maven项目。这样,由于某种原因,我没有看到src / main / resources或src / main / java。我的src文件就是它自己。我试图通过目录手动添加文件,并且pom.xml拒绝了它,我不得不回滚到原始更改。问题是,我在maven中使用了我的弹簧罐,并且它找到了我的控制器,它位于同一目录附近。
  • 我的hibernate POJO Entry.java有问题(但我觉得它不太可能,因为它很简单)
  • Typo也许?(真的不太可能,我到处都看了)
编辑:有一些猜测,也许我没有为hibernate下载正确的jar。这是我的Maven依赖项标签。

enter image description here

2 个答案:

答案 0 :(得分:2)

请检查hibernate jar是否正确添加为pom.xml中的依赖项 您可以在Entry类中使用Hibernate注释(org.hibernate.annotations.Entity)而不是JPA注释(javax.persistence.Entity)来检查这一点。 如果未正确导入Jar,则无法成功构建项目。

答案 1 :(得分:0)

如果你有一个Entry.hbm.xml,那么尝试添加hbm.xml文件的路径:

<mapping class="com.firstspringmvcproject.introcontroller.Entry" />
<mapping resource="com/firstspringmvcproject/introcontroller/Entry.hbm.xml"/>