移动到Maven项目后Hibernate映射错误

时间:2015-11-21 00:26:44

标签: java entity-framework hibernate maven backend

我的问题是使用SessionFactory映射实体。在我将它移到Maven项目之前,我的项目一直在工作。现在,当我使用Maven命令创建项目时,我的项目存在映射实体的问题。 我将SessionFactory与hibernate.cfg.xml文件一起使用。在其中我映射了所有实体。 在实体中我导入javax.persistence.Entity。 你知道其他任何可能的问题吗?

[编辑] 我的配置文件:

<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/report_db</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>


        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">false</property>

        <!-- Drop and re-create the database schema on startup 
        <property name="hbm2ddl.auto">create-drop</property>-->

        <!-- Mappings -->
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Lastfile" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Project" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Costcenter" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Month" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Resource" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Role" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Task" />
        <mapping class="com.bombardier.raportcreator.database.entity.impl.Tasktocostcenter" />
    </session-factory>
</hibernate-configuration>

示例实体类:

import java.io.Serializable;
import javax.persistence.*;

    @Entity
    @NamedQuery(name="Lastfile.findAll", query="SELECT l FROM Lastfile l")

public class Lastfile implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    private short id;

    private String lastFileName;

    public Lastfile() {
    }

    public short getId() {
        return this.id;
    }

    public void setId(short id) {
        this.id = id;
    }

    public String getLastFileName() {
        return this.lastFileName;
    }

    public void setLastFileName(String lastFileName) {
        this.lastFileName = lastFileName;
    }

}

我的项目结构。 Pom是项目的主要目录。专家展示。   [项目结构] [1]:http://i.stack.imgur.com/bDl6l.png

例外:

Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.bombardier.raportcreator.database.entity.impl.Lastfile
at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776)
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1462)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:100)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:678)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:670)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:665)
at com.bombardier.raportcreator.database.dao.DaoImpl.create(DaoImpl.java:20)
at com.bombardier.raportcreator.file.LastFileManager.setLastFileName(LastFileManager.java:34)
at Test.main(Test.java:48)

1 个答案:

答案 0 :(得分:0)

问题很明显 - 将Hibernate的chcanged版本推向最新版本(从4.3.9到5.0.4。)。我假设Hibernate在构建实体类或在新版本中映射它们时改变了一些东西。