首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JPA配置中设置默认模式名称?

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

Stack Overflow用户
提问于 2010-04-29 20:55:39
回答 8查看 179.5K关注 0票数 65

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

代码语言:javascript
复制
<hibernate-configuration> 
   <session-factory>
      ...
      <property name="hibernate.default_schema">myschema</property>
      ...
   </session-factory>
</hibernate-configuration>

现在我正在使用JPA,我想做同样的事情。否则,我必须向每个@Table注释添加参数schema,如下所示:

代码语言:javascript
复制
@Entity
@Table (name = "projectcategory", schema = "SCHEMANAME")
public class Category implements Serializable { ... }

据我所知,这个参数应该在配置的这一部分中:

代码语言:javascript
复制
<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>

..。但我在谷歌上找不到它的名字。有什么想法吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-04-29 21:11:22

我也不知道这个的JPA属性。但是您可以只添加Hibernate属性(假设您使用Hibernate作为提供者),如下所示

代码语言:javascript
复制
...

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

...

Hibernate应该会接受这一点

票数 85
EN

Stack Overflow用户

发布于 2012-11-09 17:06:40

只是为了节省那些来发帖的人的时间(像我一样,他们寻找Spring配置类型,并希望您的模式名称由外部源(属性文件)设置)。您可以使用以下配置:

代码语言:javascript
复制
<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,您可以查看我用来设置create-update的post Hibernate hbm2ddl.auto possible values and what they do?,因为它很方便。但是,在生产中,我认为最好控制ddl,所以我将第一次生成的ddl保存起来,而不是让它自动创建和更新。

票数 36
EN

Stack Overflow用户

发布于 2011-04-27 21:45:40

为了避免在JPA实体Java类中硬编码模式,我们在OracleApplicationServer10 (OC4J,Orion)中部署的Java应用程序中使用了orm.xml映射文件。它位于model.jar/META-INF/以及persistence.xml中。从带有标记的peresistence.xml引用映射文件orm.xml

代码语言:javascript
复制
...
  <persistence-unit name="MySchemaPU"  transaction-type="JTA">
    <provider>...</provider>
    <mapping-file>META-INF/orm.xml</mapping-file>
...

文件orm.xml内容引用如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
                 version="1.0">

  <persistence-unit-metadata>
    <persistence-unit-defaults>
      <schema>myschema</schema>
    </persistence-unit-defaults>
  </persistence-unit-metadata>
</entity-mappings>
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2737420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档