我正在尝试在Spring休眠应用程序中对服务类进行单元测试。
public class UserServiceTest extends SpringAwareTest {
@Autowired
@Qualifier("userService")
private UserService userSvc;
@Autowired
@Qualifier("roleService")
private RoleService roleSvc;
...
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/application-test-context.xml")
@Transactional
//@SpringApplicationConfiguration
@SpringBootTest
@Configurable
public abstract class BaseSpringAwareTest {
....
}
我的spring上下文文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"
>
<!-- import resource="classpath:/applicationContext.xml"/ -->
<context:component-scan base-package="com.olp"/>
<tx:annotation-driven />
<jpa:repositories base-package="com.olp.jpa" entity-manager-factory-ref="entityManagerFactory"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="persistenceUnitMgr"/>
<property name="jpaDialect" ref="jpaDialect"/>
</bean>
<bean id="persistenceUnitMgr" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocation" value="classpath:persistence-test.xml"/>
<property name="defaultPersistenceUnitName" value="productHubTest"/>
<property name="packagesToScan">
<array value-type="java.lang.String">
<value>com.olp.jpa</value>
</array>
</property>
</bean>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
...
</beans>
我在执行JUnits时遇到此异常-
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException:UserEntity不是 映射[SELECT t FROM UserEntity t JOIN FETCH t.roles ORDER BY t.userName ASC] org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) 在 org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) 在 org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) 在 org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:713) 在 org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:729) 在 org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)...
我的实体类在提到的顶级组件扫描的子包中-“ com.olp”
package com.olp.jpa.domain.docu.um.model;
...
@Entity
@Table(name = "trl_users")
@Cacheable(true)
@NamedQueries({
@NamedQuery(....)
})
// ...
public class UserEntity extends MultiTenantLifeCycleEntity {
// ...
}
package com.olp.jpa.common;
@MappedSuperclass
public class MultiTenantLifeCycleEntity {
// ...
}
无法确定根本原因。任何指针将不胜感激。