[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4594?page=c...
]
Stefan Rufer commented on HHH-4594:
------------------------------------
With the attached tests, find the create table staement:
$ mvn clean test | grep -i "create table"
2009-11-20 01:35:01,220 | main | ERROR | SchemaExport |
Unsuccessful: create table ${hibernate.default_schema}.Person (id varchar(255) not null,
name varchar(255), primary key (id))
and the insert statements that apparently work even if the hibernate.default_schema
property is not set:
shrek:hibernate4594 stefan$ mvn clean test | grep -i "into person"
Hibernate: insert into Person (name, id) values (?, ?)
Hibernate: insert into Person (name, id) values (?, ?)
SchemaExport does not ignore the hibernate.default_schema property if
it is not set
-----------------------------------------------------------------------------------
Key: HHH-4594
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4594
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.3.1
Environment: Hibernate 3.3.1.GA, derby 10.4.2.0, Spring 2.5.6.SEC01
Reporter: Stefan Rufer
Priority: Minor
Attachments: hibernate4594-tests.zip, hibernate4594-tests.zip
Our datasource configuration contains a hibernate.default_schema property that may not be
set by the application. In this case the generated SQL (select, insert) behaves correct
and does not prepend the table names with a schema names. Example:
select project0_.id as id2_0_, project0_.name as name2_0_, project0_.version as
version2_0_ from Project project0_ where project0_.id=?
However, SchemaExport does prepend the table name with the unresolved property name
instead of omitting it if not available:
2009-11-18 22:38:24,263 | main | ERROR | SchemaExport |
Unsuccessful: create table ${hibernate.default_schema}.Person (id varchar(255) not null,
name varchar(255), primary key (id))
In my oppinion the behaviour should be consistent and I tend to say that the SchemaExport
is wrong. If the property for the default schema is unresolved it must not be used
altogether.
As an illustration a snip from our Spring config:
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"
value="classpath:my.properties" />
<!-- this means I can omit properties used below -->
<property name="ignoreUnresolvablePlaceholders" value="true"
/>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="loadTimeWeaver">
<bean
class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"
/>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.dialect"
value="${hibernate.dialect}" />
<entry key="hibernate.show_sql"
value="${hibernate.show_sql}" />
<entry key="hibernate.hbm2ddl.auto"
value="${hibernate.hbm2ddl.auto}" />
<entry key="hibernate.format_sql"
value="${hibernate.format_sql}" />
<entry key="hibernate.generate_statistics"
value="${hibernate.generate_statistics}" />
<entry key="hibernate.use_sql_comments"
value="${hibernate.use_sql_comments}" />
<entry key="hibernate.default_batch_fetch_size"
value="${hibernate.default_batch_fetch_size}" />
<entry key="hibernate.cache.provider_class"
value="${hibernate.cache.provider_class}" />
<entry key="hibernate.cache.use_second_level_cache"
value="${hibernate.cache.use_second_level_cache}" />
<entry key="hibernate.default_schema"
value="${hibernate.default_schema}" />
</map>
</property>
<property name="persistenceUnitName"
value="${jpa.persistenceUnitName}" />
</bean>
my.properties:
jpa.persistenceUnitName=default
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.use_sql_comments=false
hibernate.hbm2ddl.auto=false
hibernate.generate_statistics=false
hibernate.default_batch_fetch_size=16
hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
hibernate.cache.use_second_level_cache=true
# hibernate.default_schema not defined for the standard case. only define it if needed.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira