Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Problem in Blob(image) retrieval using Hibernate

    Hi, I am trying to retrieve the Blog(Image) from an Oracle table which has a column (LOGO_IMAGE) and display it in HLayout in UI,
    (For your clarification : I am trying to do the same as mentioned in the link http://forums.smartclient.com/showthread.php?p=105457#post105457 with the same table and same functionality but with hibernate,

    Problem : the image could not be retrieved.

    Datasource : clientlogo.ds.xml

    <DataSource ID="clientlogo" tableName="CLIENT_LOGO" serverType="hibernate" showPrompt="false" qualifyColumnNames="false">
    <fields>
    <field name="CLIENT_ID" type="number" required="false" hidden="true" primaryKey="true" title="CLIENT_ID"/>
    <field name="LOGO_IMAGE" type="imageFile" imageWidth = "120" imageHeight = "20" title = "LOGO_IMAGE" hidden ="false" canEdit ="false" showFileInline="true" />
    <field name="image_date_created" hidden="true" ignore="true"/>
    <field name="image_filename" type="text" hidden="true" nativeName="LOGO_FILENAME" />
    <field name="image_filesize" hidden ="true" ignore="true"/>
    </fields>

    </DataSource>


    My java code :

    public void setClientLogo() {
    DataSource dataSource = DataSource.get("clientlogo");
    final DynamicForm viewForm = new DynamicForm();
    viewForm.setDataSource(dataSource);

    // the ViewFileItem uses the record from the containing form to stream the image after the main record has loaded.
    ViewFileItem imageItem = new ViewFileItem("LOGO_IMAGE");
    imageItem.setAttribute("editorType", "ViewFileItem");
    imageItem.setRedrawOnChange(true);
    imageItem.setShowTitle(false);
    imageItem.setHeight(IntegerConst.HEIGHT_32);
    imageItem.setWidth(IntegerConst.COL_WIDTH_145);
    imageItem.setTop(0);
    viewForm.setItems(imageItem);
    viewForm.setHeight(IntegerConst.HEIGHT_30);
    viewForm.setWidth(IntegerConst.COL_WIDTH_145);
    viewForm.setFetchOperation(DataSourceProperties.GET_CLIENT_LOGO);
    Criteria criteria = new Criteria(StringClientDefinitions.CLIENT_ID,"10");
    viewForm.fetchData(criteria);
    clientData.setClientLogoImage(viewForm);
    Banner.setClientLabel(clientData.getClientLogoImage());

    }

    Dev Mode log :

    === 2013-06-24 16:00:34,549 [l0-2] DEBUG RPCManager - Request #1 (DSRequest) payload: {
    criteria:{
    CLIENT_ID:10,
    download_fieldname:"LOGO_IMAGE"
    },
    operationConfig:{
    dataSource:"clientlogo",
    operationType:"viewFile"
    },
    appID:"builtinApplication",
    operation:"clientlogo_viewFile",
    oldValues:{
    CLIENT_ID:10,
    download_fieldname:"LOGO_IMAGE"
    }
    }
    === 2013-06-24 16:00:34,549 [l0-2] INFO IDACall - Performing 1 operation(s)
    === 2013-06-24 16:00:34,549 [l0-2] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2013-06-24 16:00:34,549 [l0-2] DEBUG DeclarativeSecurity - DataSource clientlogo is not in the pre-checked list, processing...
    === 2013-06-24 16:00:34,549 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile] No userTypes defined, allowing anyone access to all operations for this application
    === 2013-06-24 16:00:34,549 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile] No public zero-argument method named '_clientlogo_viewFile' found, performing generic datasource operation
    === 2013-06-24 16:00:34,551 [l0-2] DEBUG DeclarativeSecurity - [builtinApplication.clientlogo_viewFile] Processing security checks for DataSource null, field null
    === 2013-06-24 16:00:34,551 [l0-2] DEBUG DeclarativeSecurity - [builtinApplication.clientlogo_viewFile] DataSource clientlogo is not in the pre-checked list, processing...
    === 2013-06-24 16:00:34,551 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2013-06-24 16:00:34,551 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2013-06-24 16:00:34,552 [l0-2] INFO HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Performing fetch operation with
    criteria: {CLIENT_ID:10,download_fieldname:"LOGO_IMAGE"} values: {CLIENT_ID:10,download_fieldname:"LOGO_IMAGE"}
    === 2013-06-24 16:00:34,552 [l0-2] DEBUG HibernateTransaction - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Started new transaction "447147409"
    === 2013-06-24 16:00:34,553 [l0-2] WARN HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Field name: 'download_fieldname' specified in criteria is not defined in data source. Skipping.
    === 2013-06-24 16:00:34,553 [l0-2] INFO HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Query string: select _clientlogo from clientlogo _clientlogo where _clientlogo.CLIENT_ID = :p0
    === 2013-06-24 16:00:34,660 [l0-2] DEBUG HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Parameter p0: 10
    Hibernate: select clientlogo0_.CLIENT_ID as CLIENT1_0_, clientlogo0_.LOGO_IMAGE as LOGO2_0_, clientlogo0_.image_date_created as image3_0_, clientlogo0_.image_filename as image4_0_, clientlogo0_.image_filesize as image5_0_ from CLIENT_LOGO clientlogo0_ where clientlogo0_.CLIENT_ID=?
    === 2013-06-24 16:00:34,696 [l0-3] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2013-06-24 16:00:34,697 [l0-3] DEBUG RPCManager - non-DMI response, dropExtraFields: false

    === 2013-06-24 16:00:35,229 [l0-2] WARN HibernateTransaction - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Rolling back 0 database update(s)
    === 2013-06-24 16:00:35,229 [l0-2] DEBUG HibernateTransaction - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Rolling back transaction "447147409"
    === 2013-06-24 16:00:35,507 [l0-2] WARN HibernateTransaction - Attempted to close session for null transaction.
    === 2013-06-24 16:00:35,508 [l0-2] WARN RequestContext - dsRequest.execute() failed:
    org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.loader.Loader.doList(Loader.java:2231)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
    at org.hibernate.loader.Loader.list(Loader.java:2120)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at com.isomorphic.hibernate.HibernateDataSource.processRequest(HibernateDataSource.java:1227)
    at com.isomorphic.hibernate.HibernateDataSource.executeFetch(HibernateDataSource.java:817)
    at com.isomorphic.datasource.DataSource.execute(DataSource.java:1367)
    at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726)
    at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
    at com.isomorphic.application.AppBase.execute(AppBase.java:491)
    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2033)
    at com.isomorphic.hibernate.HibernateDataSource.executeDownload(HibernateDataSource.java:1942)
    at com.isomorphic.datasource.DataSource.execute(DataSource.java:1393)
    at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726)
    at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
    at com.isomorphic.application.AppBase.execute(AppBase.java:491)
    at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2033)
    at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:216)
    at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
    at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
    at com.isomorphic.servlet.IDACall.doGet(IDACall.java:82)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    Caused by: java.sql.SQLException: ORA-00904: "CLIENTLOGO0_"."IMAGE_FILESIZE": invalid identifier

    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:745)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
    at org.hibernate.loader.Loader.doQuery(Loader.java:697)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.doList(Loader.java:2228)
    ... 47 more
    === 2013-06-24 16:00:35,518 [l0-2] WARN RPCManager - dsResponse.getData().get("LOGO_IMAGE") returned null when we were expecting an InputStream, Byte[] or byte[]. Can't continue.
    === 2013-06-24 16:00:35,518 [l0-2] DEBUG HibernateTransaction - Closing session "447147409"
    === 2013-06-24 16:00:35,518 [l0-2] DEBUG HibernateTransaction - Removed transaction "447147409"

    same error in serverlogs also..

    Even though I set the filesize,data created Ignore field property as "true" Why the
    Oracle Exception :" java.sql.SQLException: ORA-00904: "CLIENTLOGO0_"."IMAGE_FILESIZE": invalid identifier" is coming??


    Please help me with this ..

    Thanks in advance

    #2
    See the Binary Fields overview: you've created a binary field called "LOGO_IMAGE" but your attempts to configure the automatic metadata fields have totally unrelated names (image_filesize) for example.

    Comment


      #3
      Problem in Blob(image) retrieval using Hibernate

      1) If I am not declaring any metadata fields,

      <DataSource ID="clientlogo" tableName="CLIENT_LOGO" serverType="hibernate" showPrompt="false" qualifyColumnNames="false">
      <fields>
      <field name="LOGO_IMAGE" type="imageFile" imageWidth = "120" imageHeight = "20" title = "LOGO_IMAGE" hidden ="false" canEdit ="false" showFileInline="true" />
      <field name="CLIENT_ID" type="number" required="false" hidden="true" primaryKey="true" title="CLIENT_ID"/>
      </fields>



      then its giving an error saying ,

      === 2013-06-25 11:16:10,000 [l0-2] DEBUG DeclarativeSecurity - DataSource clientlogo is not in the pre-checked list, processing...
      === 2013-06-25 11:16:10,000 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile] No userTypes defined, allowing anyone access to all operations for this application
      === 2013-06-25 11:16:10,000 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile] No public zero-argument method named '_clientlogo_viewFile' found, performing generic datasource operation
      === 2013-06-25 11:16:10,003 [l0-2] DEBUG DeclarativeSecurity - [builtinApplication.clientlogo_viewFile] Processing security checks for DataSource null, field null
      === 2013-06-25 11:16:10,003 [l0-2] DEBUG DeclarativeSecurity - [builtinApplication.clientlogo_viewFile] DataSource clientlogo is not in the pre-checked list, processing...
      === 2013-06-25 11:16:10,003 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
      === 2013-06-25 11:16:10,003 [l0-2] DEBUG AppBase - [builtinApplication.clientlogo_viewFile, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
      === 2013-06-25 11:16:10,004 [l0-2] INFO HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Performing fetch operation with
      criteria: {CLIENT_ID:10,download_fieldname:"LOGO_IMAGE"} values: {CLIENT_ID:10,download_fieldname:"LOGO_IMAGE"}
      === 2013-06-25 11:16:10,004 [l0-2] DEBUG HibernateTransaction - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Started new transaction "1926333198"
      === 2013-06-25 11:16:10,006 [l0-2] WARN HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Field name: 'download_fieldname' specified in criteria is not defined in data source. Skipping.
      === 2013-06-25 11:16:10,006 [l0-2] INFO HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Query string: select _clientlogo from clientlogo _clientlogo where _clientlogo.CLIENT_ID = :p0
      === 2013-06-25 11:16:10,188 [l0-2] DEBUG HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Parameter p0: 10
      Hibernate: select clientlogo0_.CLIENT_ID as CLIENT1_0_, clientlogo0_.image_filename as image2_0_, clientlogo0_.image_filesize as image3_0_, clientlogo0_.image_date_created as image4_0_, clientlogo0_.LOGO_IMAGE as LOGO5_0_ from CLIENT_LOGO clientlogo0_ where clientlogo0_.CLIENT_ID=?
      === 2013-06-25 11:16:10,276 [l0-0] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
      === 2013-06-25 11:16:10,277 [l0-0] DEBUG RPCManager - non-DMI response, dropExtraFields: false


      === 2013-06-25 11:16:11,071 [l0-2] WARN HibernateTransaction - Attempted to close session for null transaction.
      === 2013-06-25 11:16:11,072 [l0-2] WARN RequestContext - dsRequest.execute() failed:
      org.hibernate.exception.SQLGrammarException: could not execute query
      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
      at org.hibernate.loader.Loader.doList(Loader.java:2231)
      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
      at org.hibernate.loader.Loader.list(Loader.java:2120)
      at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
      at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
      at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
      at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
      at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
      at com.isomorphic.hibernate.HibernateDataSource.processRequest(HibernateDataSource.java:1227)
      at com.isomorphic.hibernate.HibernateDataSource.executeFetch(HibernateDataSource.java:817)
      at com.isomorphic.datasource.DataSource.execute(DataSource.java:1367)
      at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726)
      at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
      at com.isomorphic.application.AppBase.execute(AppBase.java:491)
      at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2033)
      at com.isomorphic.hibernate.HibernateDataSource.executeDownload(HibernateDataSource.java:1942)
      at com.isomorphic.datasource.DataSource.execute(DataSource.java:1393)
      at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726)
      at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
      at com.isomorphic.application.AppBase.execute(AppBase.java:491)
      at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2033)
      at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:216)
      at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
      at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
      at com.isomorphic.servlet.IDACall.doGet(IDACall.java:82)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
      at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
      at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.Server.handle(Server.java:324)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
      Caused by: java.sql.SQLException: ORA-00904: "CLIENTLOGO0_"."IMAGE_DATE_CREATED": invalid identifier

      2) so I just used the names in the error to pass it ,

      Datasource : clientlogo.ds.xml

      <DataSource ID="clientlogo" tableName="CLIENT_LOGO" serverType="hibernate" showPrompt="false" qualifyColumnNames="false">
      <fields>
      <field name="CLIENT_ID" type="number" required="false" hidden="true" primaryKey="true" title="CLIENT_ID"/>
      <field name="LOGO_IMAGE" type="imageFile" imageWidth = "120" imageHeight = "20" title = "LOGO_IMAGE" hidden ="false" canEdit ="false" showFileInline="true" />
      <field name="image_date_created" hidden="true" ignore="true"/>
      <field name="image_filename" type="text" hidden="true" nativeName="LOGO_FILENAME" />
      <field name="image_filesize" hidden ="true" ignore="true"/>
      </fields>

      </DataSource>

      It gave an error saying invalid identifier which I mentioned in my problem..

      3) Then, I tried to give a relative name as you suggested

      <DataSource ID="clientlogo" tableName="CLIENT_LOGO" serverType="hibernate" showPrompt="false" qualifyColumnNames="false">
      <fields>
      <field name="CLIENT_ID" type="number" required="false" hidden="true" primaryKey="true" title="CLIENT_ID"/>
      <field name="LOGO_IMAGE" type="imageFile" imageWidth = "120" imageHeight = "20" title = "LOGO_IMAGE" hidden ="false" canEdit ="false" showFileInline="true" />
      <field name="LOGO_IMAGE_date_created" ignore="true"/>
      <field name="LOGO_IMAGE_filename" type="text" hidden="true" nativeName="LOGO_FILENAME" />
      <field name="LOGO_IMAGE_filesize" ignore="true"/>
      </fields>

      It also gives error saying :

      === 2013-06-25 11:23:37,551 [l0-4] WARN HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Field name: 'download_fieldname' specified in criteria is not defined in data source. Skipping.
      === 2013-06-25 11:23:37,551 [l0-4] INFO HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Query string: select _clientlogo from clientlogo _clientlogo where _clientlogo.CLIENT_ID = :p0
      === 2013-06-25 11:23:37,553 [l0-2] DEBUG PoolableSQLConnectionFactory - [builtinApplication.retrieveMonthLimit] Executing pingTest 'select 1 from dual' on connection 1938874432
      === 2013-06-25 11:23:37,674 [l0-3] INFO DSResponse - [builtinApplication.yearQuarterMonthFetch] DSResponse: List with 12 items
      === 2013-06-25 11:23:37,674 [l0-3] DEBUG SQLConnectionManager - About to close PoolableConnection with hashcode "880862703"
      === 2013-06-25 11:23:37,674 [l0-3] DEBUG PoolableSQLConnectionFactory - Executing pingTest 'select 1 from dual' on connection 880862703
      === 2013-06-25 11:23:37,710 [l0-4] DEBUG HibernateDataSource - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Parameter p0: 10
      Hibernate: select clientlogo0_.CLIENT_ID as CLIENT1_0_, clientlogo0_.image_filename as image2_0_, clientlogo0_.image_filesize as image3_0_, clientlogo0_.image_date_created as image4_0_, clientlogo0_.LOGO_IMAGE as LOGO5_0_, clientlogo0_.LOGO_IMAGE_date_created as LOGO6_0_, clientlogo0_.LOGO_IMAGE_filename as LOGO7_0_, clientlogo0_.LOGO_IMAGE_filesize as LOGO8_0_ from CLIENT_LOGO clientlogo0_ where clientlogo0_.CLIENT_ID=?



      === 2013-06-25 11:23:38,279 [l0-3] DEBUG PoolableSQLConnectionFactory - [builtinApplication.retrieveMonthLimit] Executing pingTest 'select 1 from dual' on connection 880862703
      === 2013-06-25 11:23:38,348 [l0-4] WARN HibernateTransaction - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Rolling back 0 database update(s)
      === 2013-06-25 11:23:38,348 [l0-4] DEBUG HibernateTransaction - [builtinApplication.clientlogo_viewFile, builtinApplication.null] Rolling back transaction "2129584251"
      === 2013-06-25 11:23:38,631 [l0-5] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
      === 2013-06-25 11:23:38,632 [l0-5] DEBUG RPCManager - non-DMI response, dropExtraFields: false
      === 2013-06-25 11:23:38,634 [l0-5] INFO Compression - /MarketIntelligence/sc/IDACall: 189 -> 167 bytes
      === 2013-06-25 11:23:38,634 [l0-4] WARN HibernateTransaction - Attempted to close session for null transaction.
      === 2013-06-25 11:23:38,636 [l0-4] WARN RequestContext - dsRequest.execute() failed:
      org.hibernate.exception.SQLGrammarException: could not execute query
      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
      at org.hibernate.loader.Loader.doList(Loader.java:2231)
      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
      at org.hibernate.loader.Loader.list(Loader.java:2120)
      at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
      at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
      at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
      at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
      at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
      at com.isomorphic.hibernate.HibernateDataSource.processRequest(HibernateDataSource.java:1227)
      at com.isomorphic.hibernate.HibernateDataSource.executeFetch(HibernateDataSource.java:817)
      at com.isomorphic.datasource.DataSource.execute(DataSource.java:1367)
      at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726)
      at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
      at com.isomorphic.application.AppBase.execute(AppBase.java:491)
      at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2033)
      at com.isomorphic.hibernate.HibernateDataSource.executeDownload(HibernateDataSource.java:1942)
      at com.isomorphic.datasource.DataSource.execute(DataSource.java:1393)
      at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726)
      at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
      at com.isomorphic.application.AppBase.execute(AppBase.java:491)
      at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2033)
      at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:216)
      at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
      at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
      at com.isomorphic.servlet.IDACall.doGet(IDACall.java:82)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
      at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
      at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.Server.handle(Server.java:324)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
      Caused by: java.sql.SQLException: ORA-00904: "CLIENTLOGO0_"."LOGO_IMAGE_FILESIZE": invalid identifier


      Why its happening?

      Comment


        #4
        In the second case, your configuration appears to be correct for the latest version. But what version are you actually using? You haven't said.

        Comment


          #5
          Ok, Gwt version is 2.5.0. Is there any workaround for the version I'm using. Please suggest.

          Comment


            #6
            1 ] When I want to ignore the metadata fields from the ds.xml its not ignoring with the ignore="true", if I mention servertype="Hibernate"

            Please suggest me the ways to ignore the fields ..



            2] I tried to including those metadata columns in my table( which is CLIENT_LOGO here, to make sure the image is getting displayed with hibernate

            My java code as I mentioned earlier :
            public void setClientLogo() {
            DataSource dataSource = DataSource.get("clientlogo");
            final DynamicForm viewForm = new DynamicForm();
            viewForm.setDataSource(dataSource);

            // the ViewFileItem uses the record from the containing form to stream the image after the main record has loaded.
            ViewFileItem imageItem = new ViewFileItem("LOGO_IMAGE");
            imageItem.setAttribute("editorType", "ViewFileItem");
            imageItem.setRedrawOnChange(true);
            imageItem.setShowTitle(false);
            imageItem.setHeight(IntegerConst.HEIGHT_32);
            imageItem.setWidth(IntegerConst.COL_WIDTH_145);
            imageItem.setTop(0);
            viewForm.setItems(imageItem);
            viewForm.setHeight(IntegerConst.HEIGHT_30);
            viewForm.setWidth(IntegerConst.COL_WIDTH_145);
            viewForm.setFetchOperation(DataSourceProperties.GE T_CLIENT_LOGO);
            Criteria criteria = new Criteria(StringClientDefinitions.CLIENT_ID,"10");
            viewForm.fetchData(criteria);
            clientData.setClientLogoImage(viewForm);
            Banner.setClientLabel(clientData.getClientLogoImag e());

            }


            It didn't display the image.

            Error : NoFieldTypeFound: BLOB at BlobUserType

            When I tried to run the query generated in the sql developer I'm getting the row as result, implies I'm getting the result but I couldn't set it to viewfileItem

            So I changed clientlogo.ds.xml as

            <DataSource ID="clientlogo" tableName="CLIENT_LOGO" autoDeriveSchema="true" schemaBean="com.sabre.apd.mi.smartgwt.server.user.ClientLogo" serverType="hibernate">
            </DataSource>


            and added the file clientlogo.hbm.xml

            <?xml version="1.0"?>
            <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
            <hibernate-mapping>
            <class name="com.sabre.apd.mi.smartgwt.server.user.ClientLogo" table="CLIENT_LOGO">
            <id name="clientId" column="CLIENT_ID"/>
            <property name="imageFilename" column="IMAGE_filename"/>
            <property name="logoImage" column="LOGO_IMAGE" type="byte[]"/>
            <property name="imageDateCreated" column="IMAGE_date_created"/>
            <property name="logoFileName" column="LOGO_FILENAME"/>
            </class>
            </hibernate-mapping>




            also the file Clientlogo.java

            package com.sabre.apd.mi.smartgwt.server.user;

            import com.smartgwt.client.data.fields.DataSourceImageFileField;

            import java.io.InputStream;
            import java.io.OutputStream;
            import java.io.Serializable;
            import java.sql.Blob;

            public class ClientLogo implements Serializable {
            private int clientId;
            private byte[] logoImage;
            private String imageDateCreated;
            private String logoFileName;
            private String imageFilename;

            public int getClientId() {
            return clientId;
            }

            public void setClientId(int clientId) {
            this.clientId = clientId;
            }

            public byte[] getLogoImage() {
            return logoImage;
            }

            public void setLogoImage(byte[] logoImage) {
            this.logoImage = logoImage;
            }

            public String getImageDateCreated() {
            return imageDateCreated;
            }

            public void setImageDateCreated(String imageDateCreated) {
            this.imageDateCreated = imageDateCreated;
            }

            public String getLogoFileName() {
            return logoFileName;
            }

            public void setLogoFileName(String logoFileName) {
            this.logoFileName = logoFileName;
            }

            public String getImageFilename() {
            return imageFilename;
            }

            public void setImageFilename(String imageFilename) {
            this.imageFilename = imageFilename;
            }
            }


            After this also , I could not display .. I could able to get the data from the database,But the problem is in setting the blob to the viewfileItem.

            I also tried datatypes imageFile,binary,InputStream,DataSourceImageField,Byte[],blob,BlobUserType,BlobArrayDatatye for the logoImage field

            There is no result..
            For Inputstream,binary,blob - its giving an error in server logs saying the there datatype is not appropriate for the viewfileItem

            DevMode log :

            === 2013-06-26 16:52:28,421 [l0-3] DEBUG HibernateTransaction - [builtinApplication.getClientLogo] Started new transaction "132936849"
            === 2013-06-26 16:52:28,423 [l0-3] INFO HibernateDataSource - [builtinApplication.getClientLogo] Query string: select _ClientLogo from com.sabre.apd.mi.smartgwt.server.user.ClientLogo _ClientLogo where _ClientLogo.clientId = :p0
            === 2013-06-26 16:52:28,609 [l0-3] DEBUG HibernateDataSource - [builtinApplication.getClientLogo] Parameter p0: 10
            === 2013-06-26 16:52:28,615 [l0-0] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2013-06-26 16:52:28,617 [l0-0] DEBUG RPCManager - non-DMI response, dropExtraFields: false
            === 2013-06-26 16:52:28,619 [l0-0] INFO Compression - /MarketIntelligence/sc/IDACall: 1013 -> 418 bytes
            === 2013-06-26 16:52:28,619 [l0-2] DEBUG SQLConnectionManager - [builtinApplication.reportDisplayPreferences] Returning borrowed connection '164808003'
            === 2013-06-26 16:52:28,619 [l0-2] DEBUG SQLDriver - [builtinApplication.reportDisplayPreferences] About to execute SQL query in 'Oracle' using connection '164808003'
            Hibernate: select clientlogo0_.CLIENT_ID as CLIENT1_0_, clientlogo0_.IMAGE_filename as IMAGE2_0_, clientlogo0_.LOGO_IMAGE as LOGO3_0_, clientlogo0_.IMAGE_date_created as IMAGE4_0_, clientlogo0_.LOGO_FILENAME as LOGO5_0_ from CLIENT_LOGO clientlogo0_ where clientlogo0_.CLIENT_ID=?

            === 2013-06-26 16:52:30,182 [l0-3] INFO DSResponse - [builtinApplication.getClientLogo] DSResponse: List with 1 items
            === 2013-06-26 16:52:30,182 [l0-3] INFO HibernateTransaction - [builtinApplication.getClientLogo] Attempting to commit 0 database update(s)
            === 2013-06-26 16:52:30,182 [l0-3] DEBUG HibernateTransaction - [builtinApplication.getClientLogo] Committing transaction "132936849"



            === 2013-06-26 16:52:30,490 [l0-3] WARN BasicDataSource - Can not load related data source '[B' for field 'logoImage'. Treating as simple field.
            === 2013-06-26 16:52:30,490 [l0-3] DEBUG DataSourceAnnotations - Generating data source 'ClientLogo' for class com.sabre.apd.mi.smartgwt.server.user.ClientLogo


            Or can I use anyother item other than viewFileItem??

            What changes I need to do in my java code or in the bean class to make it work??

            Please Suggest, I'm trying this for long time..
            Last edited by Vinod.Narayankar; 26 Jun 2013, 04:02. Reason: changes

            Comment


              #7
              We need the SmartGWT version, not just the GWT version.

              Note that the forums asks you for this information every time you post. It is required.

              Comment


                #8
                SmartGWT Framework Version - (v8.3p_2013-05-05/Enterprise Deployment 2013-05-05)

                Comment


                  #9
                  Please suggest, What can I do further to display image using hibernate?

                  Comment


                    #10
                    Hi,

                    Sorry for long delay (I've just realized that I did not post an answer).

                    I did try to reproduce your problem without success (I've tested on postgresql not oracle but I think it should not create any difference).

                    Anyway here is full working code:
                    SQL table structure:
                    Code:
                    CREATE TABLE client_logo
                    (
                      id bigint NOT NULL DEFAULT nextval('client_logo_client_id_seq'::regclass),
                      logo bytea,
                      CONSTRAINT client_logo_pk PRIMARY KEY (id )
                    )
                    Hibernate entity:
                    Code:
                    package com.smartgwt.sample.server;
                    
                    import java.io.Serializable;
                    import javax.persistence.Column;
                    import javax.persistence.Entity;
                    import javax.persistence.GeneratedValue;
                    import javax.persistence.GenerationType;
                    import javax.persistence.Id;
                    import javax.persistence.Table;
                    
                    @Entity
                    @Table(name="client_logo")
                    public class Image
                        implements Serializable {
                    
                        @Id
                        @Column (nullable = false)
                        @GeneratedValue (strategy = GenerationType.IDENTITY)
                        private Long id;
                    
                        @Column (name="logo")
                        private byte[] logo;
                    
                        public Long getId() {
                            return id;
                        }
                    
                        public void setId(Long id) {
                            this.id = id;
                        }
                    
                        public byte[] getLogo() {
                            return logo;
                        }
                    
                        public void setLogo(byte[] logo) {
                            this.logo = logo;
                        }
                    }
                    Data source
                    Code:
                    <DataSource ID="image"
                                serverType="hibernate"
                                dropExtraFields="true"
                                beanClassName="com.smartgwt.sample.server.Image">
                        <fields>
                            <field name="id" type="sequence" primaryKey="true"/>
                            <field name="logo" type="imageFile" title = "LOGO_IMAGE" showFileInline="true"/>
                            <field name="logo_date_created" ignore="true"/>
                            <field name="logo_filename" ignore="true"/>
                            <field name="logo_filesize" ignore="true"/>
                    </fields>
                    </DataSource>
                    Client code:
                    Code:
                        public void onModuleLoad() {
                            DataSource dataSource = DataSource.get("image");
                    
                            VStack vStack = new VStack();
                            vStack.setLeft(175);
                            vStack.setTop(75);
                            vStack.setWidth("70%");
                            vStack.setMembersMargin(20);
                    
                            final ListGrid grid = new ListGrid(dataSource);
                            grid.setAutoFetchData(true);
                            grid.setCanRemoveRecords(true);
                    
                            IButton refreshButton = new IButton("Refresh");
                            refreshButton.addClickHandler(new ClickHandler() {
                                public void onClick(ClickEvent event) {
                                    grid.invalidateCache();
                                }
                            });
                    
                            final DynamicForm form = new DynamicForm();
                            form.setDataSource(dataSource);
                            FileItem imageItem = new FileItem("logo");
                            imageItem.setRequired(true);
                            form.setFields(imageItem);
                            IButton uploadButton = new IButton("Upload");
                            uploadButton.addClickHandler(new ClickHandler() {
                                public void onClick(ClickEvent event) {
                                    form.saveData(new DSCallback() {
                                        public void execute(DSResponse dsResponse, Object data, DSRequest dsRequest) {
                                            if (dsResponse.getStatus() == 0) {
                                                form.editNewRecord();
                                            }
                                        }
                                    });
                                }
                            });
                    
                            vStack.addMember(grid);
                            vStack.addMember(refreshButton);
                            vStack.addMember(form);
                            vStack.addMember(uploadButton);
                            vStack.draw();
                        }
                    Regards,
                    Alius

                    Comment

                    Working...
                    X