如何在JPAconfiguration中设置默认模式名称?
我发现在hibernateconfiguration文件中我们可以设置参数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 { ... }
据我所知这个参数应该在这部分configuration的某个地方:
<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>
…但我不能在谷歌find它的名字。 有任何想法吗?
不知道这个JPA的财产。 但是你可以添加Hibernate属性(假设你使用Hibernate作为提供者)
... <property name="hibernate.default_schema" value="myschema"/> ...
hibernate应该挑起来
只是为了节省来到这个post的人的时间(像我,谁在寻找Springconfigurationtypes,并希望你的模式名称由外部源(属性文件)设置)。 configuration将为你工作
<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可能的值和他们做什么? 我曾经设置了创build更新,因为它很方便。 但是在生产中,我认为最好是控制ddl,所以我把第一次生成的ddl保存起来,而不是让它自动创build和更新。
为了避免在JPA实体Java类中硬编码模式,我们在OracleApplicationServer10(OC4J,Orion)中部署的Java EE应用程序中使用了orm.xml映射文件。 它放在model.jar / META-INF /以及persistence.xml中。 映射文件orm.xml是从带有标签的peresistence.xml引用的
... <persistence-unit name="MySchemaPU" transaction-type="JTA"> <provider> <mapping-file>META-INF/orm.xml</mapping-file> ...
文件orm.xml的内容如下:
<?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>
对于其他使用基于java的configuration的spring-boot,
我在application.properties中设置模式值
spring.jpa.properties.hibernate.dialect=... spring.jpa.properties.hibernate.default_schema=...
- 如何将HiveQL查询的结果输出到CSV?
- 协作时如何pipe理configuration文件?
- 提交特定于计算机的configuration文件
- Spring Boot和多个外部configuration文件
- 如何通过Maven正确安装和configurationJSF库?
- 如何用C#中的代码更改networking设置(IP地址,DNS,WINS,主机名)
- 在PHP Web应用程序中保存configurationvariables的最佳方法是什么?
- 在PHP中创build一个configuration文件
- 春季启动:是否有可能使用外部application.properties文件在任何目录与胖胖的jar?