休眠 - 扫描实体

问题描述:

我入门级的Java开发人员,我有项目,Hibernate和属性文件hibernate.cfg.xml这样休眠 - 扫描实体

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE hibernate-configuration PUBLIC        
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/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/account?useSSL=false</property> 
     <property name="hibernate.connection.password">root</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="show_sql">true</property> 
     <property name="hbm2ddl.auto">create</property> 
     <mapping class="ua.com.vtkachenko.entity.Group"></mapping> 
     <mapping class="ua.com.vtkachenko.entity.Movement"></mapping> 
     <mapping class="ua.com.vtkachenko.entity.Product"></mapping> 
     <mapping class="ua.com.vtkachenko.entity.Description"></mapping> 
    </session-factory> 
</hibernate-configuration> 

如何设置实体类的自动扫描并删除此行?

<mapping class="ua.com.vtkachenko.entity.Group"></mapping> 
<mapping class="ua.com.vtkachenko.entity.Movement"></mapping> 
<mapping class="ua.com.vtkachenko.entity.Product"></mapping> 
<mapping class="ua.com.vtkachenko.entity.Description"></mapping> 
+1

从DTD:''so'' – 2016-12-05 12:37:19

+0

我替换代码片段: '' 通过 ''但仍不很工作。 @RC – Vlad

当你定义在Spring上下文文件sessionfactory豆,你可以使用packagesToScan财产和@Entity注解来实现这一目标。

代码片段:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    ... //other properties 
    <property name="packagesToScan" value="ua.com.vtkachenko.entity"> 
    ../other properties 
</bean> 

现在写@Entity标注实体类以上。你的实体类也应该有@Column注解来映射表列。

希望它有帮助。如果您有任何问题,请告诉我。

+0

我插入此为我的应用程序-context.xml中,并在线程“主要” org.hibernate.MappingException得到错误 _Exception:未知实体:ua.com.vtkachenko.entity.Group \t在org.hibernate.impl .SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:548)..............._ – Vlad

+0

我认为在Spring中使用Hibernate的时候解决这个问题是正确的方法。 在我的例子中,我有这样的项目结构 ![截图](https://s18.postimg.org/w29vccrih/Screenshot_from_2016_12_05_16_16_19.png)。 – Vlad

我建议你学习而不是这个:Spring引导和JPA。

如果您的目标只是学习,恕我直言,它会为您节省很多头痛。

问候

+0

Spring Boot和JPA确实提供了一个非常简洁的快速入门,但是随着注入和调试Spring(春天非常庞大而压倒性的),我得到了严重的头痛。我最终放弃了,并且完全停止使用Spring和JavaEE,并转移到:https://github.com/mvysny/vaadin-on-kotlin(免责声明 - 我是作者) –

或者,如果你不想使用Spring,这里是对JavaSE的纯Hibernate的一个解决方案 - 这将扫描整个classpath中JPA实体:https://*.com/a/41845759/377320