moving to a live data source (hrsample)

4 posts / 0 new
Last post
tim722
Offline
Joined: 02/11/2011
moving to a live data source (hrsample)

In the documentation for jspresso, it states: The default configuration generated by the archetype uses HSQL DB as the database. In a production environment, you will adapt it to your targeted database.

I read the wiki entry about migrating to MySql, which seems easy enough. Can I add something to my project that would allow

mvn package

to generate the ddl for a database other than mysql or postgres?

 

Thanks for any help anyone can provide

vvandens
Offline
Joined: 05/29/2008
moving to a live data source (hrsample)

Hi Tim,

Welcome to Jspresso !

You can easily generate ddls for other databases by editting the core/pom.xml and adding an execution section to the hibernate3-maven-plugin. Of course it has to be a database Hibernate supports (i.e. it has a dialect for). For instance, you could generate an Oracle schema using the following execution section :

              <execution>
<id>generate-oracle-schema</id>
<phase>prepare-package</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
</component>
</components>
<componentProperties>
<implementation>configuration</implementation>
<drop>false</drop>
<export>false</export>
<format>true</format>
<propertyfile>conf/schema-export-oracle.properties</propertyfile>
<outputfilename>hrsample-schema-oracle.sql</outputfilename>
<scan-classes>true</scan-classes>
</componentProperties>
</configuration>
</execution>

The only thing left to do is to create the execution configuration file (i.e. core/conf/schema-export-oracle.properties) containing the dalect to use. So create the file and fill it with :

# The dialect used to generate the Oracle schema DDL
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect

Next package build should create the hrsample-schema-oracle.sdl ddl automatically.

 

HTH,

Vincent

tim722
Offline
Joined: 02/11/2011
re: moving to a live data source

Vincent,

Thanks for the good info. I was able to get my hrsample app connected to Oracle. At this point, I'm getting an exception when I query the employees table in the main employee pane. Everything else appears to be working great. The app fills the database with sample data on startup, and I can see the employee data in Oracle. In departments view, the employees are listed in the team members tree and in the department managers table. I'm not sure what is causing the error, but it seems to be a misplaced "FROM"  statement, according to the error output.

 

ORA-00923: FROM keyword not found where expected

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execu
te query; nested exception is org.hibernate.exception.SQLGrammarException: could
 not execute query
        at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHiberna
teAccessException(SessionFactoryUtils.java:630)
        at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernate
AccessException(HibernateAccessor.java:412)
        at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(Hibern
ateTemplate.java:424)
        at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativ
eSession(HibernateTemplate.java:374)
        at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(H
ibernateTemplate.java:1055)
        at org.jspresso.framework.application.backend.action.persistence.hiberna
te.QueryEntitiesAction$1.doInTransaction(QueryEntitiesAction.java:156)
        at org.springframework.transaction.support.TransactionTemplate.execute(T
ransactionTemplate.java:128)
        at org.jspresso.framework.application.backend.ControllerAwareTransaction
Template.execute(ControllerAwareTransactionTemplate.java:65)
        at org.jspresso.framework.application.backend.action.persistence.hiberna
te.QueryEntitiesAction.execute(QueryEntitiesAction.java:110)
        at org.jspresso.framework.application.backend.AbstractBackendController.
execute(AbstractBackendController.java:247)
        at org.jspresso.framework.application.backend.action.module.QueryModuleF
ilterAction.execute(QueryModuleFilterAction.java:83)
        at org.jspresso.framework.application.backend.AbstractBackendController.
execute(AbstractBackendController.java:247)
        at org.jspresso.framework.application.frontend.controller.AbstractFronte
ndController.executeBackend(AbstractFrontendController.java:982)
        at org.jspresso.framework.application.frontend.controller.AbstractFronte
ndController.execute(AbstractFrontendController.java:343)
        at org.jspresso.framework.application.action.AbstractAction.execute(Abst
ractAction.java:112)
        at org.jspresso.framework.application.frontend.controller.AbstractFronte
ndController.executeFrontend(AbstractFrontendController.java:995)
        at org.jspresso.framework.application.frontend.controller.AbstractFronte
ndController.execute(AbstractFrontendController.java:345)
        at org.jspresso.framework.view.remote.RemoteActionFactory$ActionAdapter.
actionPerformed(RemoteActionFactory.java:205)
        at org.jspresso.framework.application.frontend.controller.remote.Default
RemoteController.handleCommand(DefaultRemoteController.java:714)
        at org.jspresso.framework.application.frontend.controller.remote.Default
RemoteController.handleCommands(DefaultRemoteController.java:236)
        at org.jspresso.framework.application.startup.remote.RemoteStartup.handl
eCommands(RemoteStartup.java:72)
        at sun.reflect.GeneratedMethodAccessor802.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdap
ter.java:421)
        at flex.messaging.services.RemotingService.serviceMessage(RemotingServic
e.java:183)
        at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java
:1503)
        at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndp
oint.java:884)
        at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBroker
Filter.java:121)
        at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:15
8)
        at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:
44)
        at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFi
lter.java:67)
        at flex.messaging.endpoints.amf.SerializationFilter.invoke(Serialization
Filter.java:146)
        at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.ja
va:278)
        at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java
:322)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.jspresso.framework.util.http.HttpRequestHolder.doFilter(HttpReque
stHolder.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:298)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
r.java:864)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
ocess(Http11AprProtocol.java:579)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:16
65)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.j
ava:90)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelp
er.java:66)
        at org.hibernate.loader.Loader.doList(Loader.java:2235)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
        at org.hibernate.loader.Loader.list(Loader.java:2124)
        at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java
:118)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597)
        at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
        at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate
(HibernateTemplate.java:1065)
        at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(Hibern
ateTemplate.java:419)
        ... 48 more
Caused by: java.sql.SQLException: ORA-00923: FROM keyword not found where expect
ed

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.
java:216)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPrepare
dStatement.java:799)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStateme
nt.java:1038)
        at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPrepa
redStatement.java:839)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
nt.java:1133)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrep
aredStatement.java:3285)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare
dStatement.java:3329)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
gatingPreparedStatement.java:92)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:
208)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
        at org.hibernate.loader.Loader.doQuery(Loader.java:697)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lo
ader.java:259)
        at org.hibernate.loader.Loader.doList(Loader.java:2232)
        ... 55 more

vvandens
Offline
Joined: 05/29/2008
re: moving to a live data source

Hi Tim,

Maybe you can turn on SQL statements logging to identify the offending one. Using the swing version, log4j.properties is located in core/src/main/resources whereas for the othe ui channels based on webapps, it's in webapp/src/main/resources. Just put DEBUG for the org.hibernate.SQL logger.

 

HTH,

Vincent