我是入门级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>
当您在春季上下文文件中定义 sessionfactory
bean时,可以使用 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
注释,以用表列映射。
希望它有帮助。如果您有任何问题,请告诉我。
我建议您学习而不是学习:Spring Boot和JPA。
如果您的目标只是学习,它将为您节省许多头痛。
问候
或,如果您不想使用Spring,这里有一个在Javase上具有纯Hibernate的解决方案 - 这将扫描您的整个类Path对JPA实体:https://stackoverflow.com/A/41845759/377320