我目前正在将一个旧的Spring项目转移到Spring boot。在旧项目中,我们在xml上下文中显式地初始化数据源和会话工厂。但是在迁移到Spring Boot之后,所有的事情都是通过Spring boot和application.properties实现的。
我的问题是,在没有显式创建/初始化数据源和sessionFactory的情况下,如何将annotatedClasses添加到hibernateSessionFactory?我可以通过application.properties完成吗?
下面是前一个上下文的样子:
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>com.example.myEntity</value>
</list>
</property>我们使用以下版本:
Spring: 5.1.15.Relase,Spring-Boot: 2.1.14.Relase,Hibernate: 5.4.15.Final
快速澄清:
因此,整个项目已经使用适当的注释进行了迁移。当我们在Dao中创建查询时,问题只出现在一个实例中。错误是该查询中引用的实体未映射。
查询创建如下所示:
getSession().createQuery("from TemplateImpl t");我得到的错误是:
org.hibernate.hql.internal.ast.QuerySyntaxException: TemplateImpl is not mapped.Dao用存储库注解,事务和实体(TemplateImpl)用Entity注解。
我是否仍然需要显式地将annotatedClasses添加到sessionFactory?如果不是,为什么我会得到这个错误?
发布于 2021-01-26 20:50:46
在Spring Boot中使用基于Java的注释配置,可以通过以下方式自动管理数据访问:
application.propertie文件:
在此处定义访问数据库时所需的连接字符串和所有其他功能
@Repository接口:
通过提供本机CRUD功能,帮助简化访问数据库所需的样板程序的接口
@Entity类:
是一个在内存中表示表的类
此link应该会对您有所帮助。
https://stackoverflow.com/questions/65901187
复制相似问题