如何在 JPA 配置中设置默认模式名称?

新手上路,请多包涵

我发现在休眠配置文件中我们可以设置参数 hibernate.default_schema

 <hibernate-configuration>
   <session-factory>
      ...
      <property name="hibernate.default_schema">myschema</property>
      ...
   </session-factory>
</hibernate-configuration>

现在我正在使用 JPA,我也想这样做。否则,我必须将参数 schema 添加到每个 @Table 注释中,例如:

 @Entity
@Table (name = "projectcategory", schema = "SCHEMANAME")
public class Category implements Serializable { ... }

据我了解,此参数应该位于这部分配置中的某个位置:

 <bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="JiraManager"/>
    <property name="dataSource" ref="domainDataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="false"/>
            <property name="showSql" value="false"/>
            <property name="databasePlatform" value="${hibernate.dialect}"/>
        </bean>
    </property>
</bean>

<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="${db.driver}" />
    <property name="jdbcUrl" value="${datasource.url}" />
    <property name="user" value="${datasource.username}" />
    <property name="password" value="${datasource.password}" />
    <property name="initialPoolSize" value="5"/>
    <property name="minPoolSize" value="5"/>
    <property name="maxPoolSize" value="15"/>
    <property name="checkoutTimeout" value="10000"/>
    <property name="maxStatements" value="150"/>
    <property name="testConnectionOnCheckin" value="true"/>
    <property name="idleConnectionTestPeriod" value="50"/>
</bean>

…但我无法在谷歌中找到它的名字。有任何想法吗?

原文由 Roman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 882
2 个回答

也不知道 JPA 属性。但是你可以只添加 Hibernate 属性(假设你使用 Hibernate 作为提供者)作为

...

<property name="hibernate.default_schema" value="myschema"/>

...

Hibernate 应该选择它

原文由 bert 发布,翻译遵循 CC BY-SA 2.5 许可协议

只是为了节省来帖子的人的时间(像我一样,寻找 Spring 配置类型并希望您的架构名称由外部源(属性文件)设置)。该配置将为您工作

<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="JiraManager"/>
    <property name="dataSource" ref="domainDataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="false"/>
            <property name="showSql" value="false"/>
            <property name="databasePlatform" value="${hibernate.dialect}"/>
        </bean>
    </property>
    <property name="jpaProperties">
       <props>
            <prop key="hibernate.hbm2ddl.auto">none</prop>
            <prop key="hibernate.default_schema">${yourSchema}</prop>
       </props>
</property>

</bean>

Ps:对于hibernate.hdm2ddl.auto,你可以看看帖子 Hibernate hbm2ddl.auto possible values and what they do? 我习惯设置create-update,因为方便。但是,在生产中,我认为最好控制 ddl,所以我把第一次生成的 ddl 拿走,保存它,而不是让它自动创建和更新。

原文由 sernle 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题