我的问题是使用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)
答案 0 :(得分:0)
问题很明显 - 将Hibernate的chcanged版本推向最新版本(从4.3.9到5.0.4。)。我假设Hibernate在构建实体类或在新版本中映射它们时改变了一些东西。