`
surelei
  • 浏览: 67698 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JPA全注解的自动扫描问题

阅读更多
用maven搭建了一个基于SSH的框架,写单元测试时碰到一个问题。由于我是全注解配置,所以需要spring自动扫描包里面的类,特别是用JPA注解配置的entity类。但是对DAO层做单元测试时,发现一直报“unknown entity”,显然entity未被扫描到。但是类之间的依赖关系都很正常,难道spring只是不扫描JPA注解么?
看一下maven下的项目结构:
src/main/java
src/main/resources
src/test/java
src/test/resources
maven构建的项目源代码和测试代码被分别编译到了target/classes目录和target/test-classes目录,我把classes目录下编译好的entity类的class文件copy到test-classes目录下,运行测试就可以找到entity了,说明spring在扫描JPA的注解时只扫描了test-classes。
单元测试环境和web运行环境的区别只有两个:一个是单元测试环境由测试代码启动spring容器读取配置并初始化,而web运行环境则由web容器来做这件事。另一个区别是单元测试的spring配置文件以及JPA的persistence.xml文件都是另外写的,保存在src/test/resources目录下,也就是说会被编译到test-classes目录。
将persistence.xml文件移动到src/main/resources目录下,运行单元测试,一切正常了!
在网上查到,JPA的entity类要和persistence.xml在一个classpath下(编译后),否则会找不到,不知道这个算bug么?
分享到:
评论

相关推荐

    JPA注解的解释和说明.pdf

    @Component、@ComponentScan、@Configuration、@Bean:这些注解用于指定组件和Bean配置信息,其中@ComponentScan用于组件扫描,@Bean用于产生bean并交由Spring管理,而@Configuration用于声明配置类。 @Autowired、...

    SSH2框架整合并使用JPA注解配置

    - 配置JPA的实体扫描路径,这样Spring才能找到并管理使用了JPA注解的实体类。 2. **JPA注解配置**: - `@Entity`:标记一个类为数据库表的映射,相当于Hibernate的`@Table`。 - `@Id`:标识一个字段为表的主键,...

    springboot集成jpa代码,自动生成表

    当Spring Boot应用启动时,JPA会自动扫描`@Entity`类并根据它们生成对应的数据库表。如果表已存在且与实体类匹配,则不会进行更改。如果表不存在,JPA将根据实体类创建表。 6. **使用Repository** 一旦表创建完成...

    QueryDsl自动生成QModel(注解扫描annotation-processor)

    ### QueryDsl自动生成QModel(注解扫描annotation-processor) #### 一、概述 QueryDsl 是一种用于简化查询构建的 Java 库,它通过类型安全的方式帮助开发者编写更清晰、更易于维护的查询语句。而在使用 QueryDsl ...

    Spring Data JPA 简化 JPA 开发

    1. Repository:这是所有 Repository 接口的基类,不包含任何方法,主要用于定义通用的类型信息,使 Spring 能够在扫描时自动识别和配置。 2. CrudRepository:继承自 Repository,提供了基本的 CRUD 功能,如 save...

    基于jpa+hibernate+spring+spring mvc注解方式项目

    而使用Spring Data JPA时,只需要配置数据源、JPA供应商(如Hibernate)以及实体扫描路径即可。注解如`@PersistenceContext`可以注入`EntityManager`,`@EntityScan`用于指定实体类的位置。 **5. Spring MVC的处理...

    全注解servlet实例

    只需将项目打包成WAR文件,放入容器的webapps目录下,容器会自动扫描并加载注解定义的Servlet。 5. **servletDemo**: 这个文件名可能是项目的主要源码文件夹或者包含主Servlet的文件。在其中,可能会看到如何使用...

    JPA

    例如,`@MappingLocations`用于指定映射文件的位置,`@PathPattern`用于定义路径模式,`@AnnotatedClasses`用于标记特定的实体类,而`@Component-scan`则用于自动扫描和注册组件。 ### JPA的关系映射 JPA提供了...

    ssh2全注解方式整合demo

    这些注解可以用来标记类,使得Spring能够自动扫描并管理这些类。例如,`@Service`注解常用于标记业务逻辑层的类,Spring会自动将此类实例化并加入到IoC容器中。 另外,Spring的AOP(面向切面编程)也支持注解,比如...

    Spring Data JPA文档.zip

    配置方面,Spring Data JPA需要在配置文件中声明数据源、JPA供应商(如Hibernate)、实体扫描路径等。XML配置可以通过`<jpa:repositories>`元素定义Repository的基包,以及`<bean>`标签来配置DataSource和...

    jpa整合spring源码

    5. **定义实体和Repository**:使用JPA的注解(如@Entity、@Table、@Id等)定义实体类,然后创建对应的Repository接口,Spring Data JPA会自动生成实现。 6. **注入并使用EntityManager和Repository**:在需要使用...

    jpa的学习---jpa demo工程

    在Java项目中,JPA的配置通常通过`pom.xml`文件引入依赖,如Spring Data JPA,然后在`application.properties`或`application.yml`文件中设置数据源、实体扫描路径、JPA供应商(如Hibernate)等相关属性。...

    Spring Data JPA.zip

    在项目中引入 Spring Data JPA 和相应的 JPA 实现(如 Hibernate),配置实体扫描路径、数据源、JPA 配置、Repository 扫描等。 **4. 实体类与表的映射** 使用 `@Entity` 注解标记实体类,`@Table` 定义对应的...

    SpringMVC +Hibernate JPA+Spring-data-jpa实例

    1. **配置文件**:设置SpringMVC、Hibernate JPA和Spring Data JPA的相关配置,如数据源、实体扫描路径、JPA配置等。 2. **实体类**:定义与数据库表对应的实体类,包含属性和注解。 3. **Repository接口**:定义...

    spring_jpa源代码

    - Spring Boot通过`@EnableJpaRepositories`和`@EntityScan`注解自动配置JPA和实体扫描。 3. **实体(Entity)** - 实体类代表数据库中的表,使用`@Entity`注解标记。 - `@Id`注解标识主键字段,可以配合`...

    Spring2.5整合JPA

    6. **使用Repository**:Spring Data JPA提供了一种声明式的方法来定义Repository接口,可以自动实现基本的CRUD操作。只需要定义接口,不需要编写具体的实现。 7. **注入并使用**:在需要使用JPA的地方,通过@...

    spring jpa

    通过配置数据源、JPA供应商(如Hibernate)、实体扫描路径等,Spring Boot会自动配置并启动JPA。同时,Spring Data JPA的自动查询生成能力极大地提高了开发效率,减少了手动编写SQL的繁琐工作。 总的来说,Spring ...

    Mybatis和JPA区别表格详细比较.docx

    - Mybatis 需要配置 `@MapperScan` 注解扫描 Mapper 接口,自定义 Dao 方法并编写 XML 映射文件。 - JPA 则需要在实体类上添加 `@Entity` 注解,配置 Repository 接口,并实现 `JpaRepository` 接口,可以不写具体...

Global site tag (gtag.js) - Google Analytics