java - Hibernate 默认架构不起作用

标签 java spring hibernate

我正在尝试在 Hibernate 映射中设置默认架构,如下所示:

<persistence-unit name="store">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jar-file>store-data-0.0.4-SNAPSHOT.jar</jar-file>

    <properties>
        <property
            name="hibernate.show_sql"
            value="true" />
        <property
            name="hibernate.format_sql"
            value="true" />
        <property
            name="hibernate.default_schema"
            value="Store"></property>
        <property
            name="hibernate.archive.autodetection"
            value="class" />
    </properties>
</persistence-unit>

但是,当我运行一个简单的测试查询时:

@PersistenceContext
private EntityManager manager;

@Transactional
public List<Person> listPeople() {
    return manager.createQuery("SELECT p FROM Person p", Person.class).getResultList();
}

我明白了:

对象名称“Person”无效。

当我运行 native 查询时:

manager.createNativeQuery("SELECT * FROM Store.Person", Person.class).getResultList();

一切正常。

我正在使用 Spring 运行 SE 应用程序。我之前在 Web 应用程序中使用过 hibernate.default_schema ,而且效果很好。

这就是我声明实体映射的方式:

<bean
    id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property
        name="dataSource"
        ref="mysqlDataSource" />
    <property
        name="packagesToScan"
        value="com.base.package" /> <!-- base package for all my entities -->
    <property name="jpaVendorAdapter">
        <bean
            class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
</bean>

有什么想法吗?

最佳答案

我可以通过直接在 Spring 上下文文件中设置默认架构来解决问题:

<bean
    id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property
        name="dataSource"
        ref="mysqlDataSource" />
    <property
        name="packagesToScan"
        value="com.base.package" /> <!-- base package for all my entities -->
    <property name="jpaVendorAdapter">
        <bean
            class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.default_schema">Store</prop>
            </props>
        </property>
</bean>

关于java - Hibernate 默认架构不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846636/

相关文章:

OSX 10.6.4 中的 JAVA 1.5

java - 父类选择查询错误+将父/子一起插入: Spring 4 Hibernate ORM

java - 考虑在您的配置中定义一个类型为 'com.repository.UserRepository' 的 bean

java - 没有 Spring MVC 的 Spring Web 上下文

java - CXF服务协助

java - 从 hibernate 模型生成图表

java - 是否有用于生成 MOBI 电子书文档的 Java 或 Ruby 库?

java - JSF 2.0 : Why does f:ajax send all the form fields and not only those marked with execute-attribute?

java - 用JAVA手绘图形

Spring Batch - 如何使用分区并行读写数据?