【问题标题】:How do I get a property from an EntityManagerFactory in my JUnit test?如何在我的 JUnit 测试中从 EntityManagerFactory 获取属性?
【发布时间】:2013-07-21 10:26:19
【问题描述】:

我正在使用 Spring 3.1.1.RELEASE、JUnit 4.8.1 和 Hibernate 4.1.0.Final。我在我的测试应用程序上下文中定义了这个:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="packagesToScan" value="org.myco.subco,com.parentco.fdr.myproject" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
    </property> 
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaPropertyMap" ref="jpaPropertyMap" />
</bean>

如何在我的 JUnit 测试中将“packagesToScan”属性作为字符串获取?我试过了

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" })
public class SerializableTest extends AbstractNTsubcoTests
{

        @Autowired
        private EntityManagerFactory m_entityManagerFactory;

    @Test
    public final void testSerializable()
    {
        final String packagesToScan = (String) m_entityManagerFactory.getProperties().get("packagesToScan");
        System.out.println("packagesToScan:" + packagesToScan);
    }   // testSerializable
}

然而,尽管我在上下文中定义了一个非空值,但上面打印出“null”。

【问题讨论】:

    标签: spring hibernate properties junit entitymanager


    【解决方案1】:

    该属性设置为 org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean,而不是 EntityManagerFactory。 LocalContainerEntityManagerFactoryBean 不是 EntityManagerFactory,它创建了 EntityManagerFactory。

    查看Spring代码,packagesToScan属性是在DefaultPersistenceUnitManager中设置的,取不到它的值。

    我认为您可以使用默认值定义 Spring 属性并查询该属性。

    <property name="packagesToScan" value="${packagesToScan:org.myco.subco,com.parentco.fdr.myproject}" />
    

    获取方法如下

    @Value("${packagesToScan}")
    private String packagesToScan;
    

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      相关资源
      最近更新 更多