【问题标题】:Spring/Hibernate: Entity is not mappedSpring/Hibernate:实体未映射
【发布时间】:2021-10-17 16:23:06
【问题描述】:

我正在做一个 Spring/Hibernate MVC CRUD 项目(可以在这里找到:https://github.com/Benjamin-Re/customer-tracker-demo/tree/main/web-customer-tracker1/src/base_package/de/entity)。在 servlet 中,我声明要扫描的基本包。但是它不扫描子包。我收到我的实体“未映射”的错误。

org.hibernate.hql.internal.ast.QuerySyntaxException: 客户未映射 [来自客户]

我只指定了要扫描的实体包,错误就消失了。但是没有扫描其他包的bean,因此找不到映射。

我尝试这样列出子包:

<context:component-scan base-package="base_package.de.entity, base_package.de.controller, base_package.de.dao, base_package.de.service" />

但没有找到实体。我得到同样的错误。

我也尝试这样列出它们:

<context:component-scan base-package="'base_package.de.entity', 'base_package.de.controller', 'base_package.de.dao', 'base_package.de.service'" />

在这里,我没有收到错误消息,而是收到警告:没有为 GET /web-customer-tracker1/customer/list 映射。所以我猜它找不到控制器。

然后我尝试将所有类直接放在一个包中。然后我收到错误: 创建名称为“customerController”的 bean 时出错:通过字段“customerService”表示的依赖关系不满足 所以现在它没有找到 customerService bean。如您所见,每个 bean 都有正确的注解 @Entity、@Controller、@Repository、@Service。我检查了导入,它们是 org.springframework.stereotype。

我在这里做错了什么?任何意见将不胜感激。

【问题讨论】:

  • 您共享了一个存储库链接,谢谢。但是您没有从本地机器上传代码。没有看到代码我们如何解决问题?

标签: java spring hibernate


【解决方案1】:

&lt;context:component-scan .../&gt; 与实体扫描无关。你应该保持原样

<context:component-scan base-package="base_package.de" />

通过您的 github 存储库,答案在 spring-mvc-crud-demo-servlet.xml 中,更具体地说在 sessionFactory 的声明中。那里有一个名为packagesToScan 的属性,该属性应设置为您的实体包,而不是现在的“控制器”。

<property name="packagesToScan" value="base_package.de.entity" />

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 2014-03-06
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多