You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Bikram B Kapoor <bi...@pugmarksdesign.com> on 2004/12/23 12:34:53 UTC

Help required

Hi All,
I have just made an entry like 
  <class-descriptor
      class="MyCount"
   >
      <field-descriptor id="1"
         name="rowCount"
         column="rowCount"
         jdbc-type="INTEGER"/>
   </class-descriptor>

in repository_user.xml file. I have created this file for counting the number of results returned by a query.

the MyCount file contains the following code:
public class MyCount implements java.io.Serializable {

 
private int rowCount;

 public MyCount() {
 }
 
 
public int getrowCount() {
  return rowCount;
 }
 
 public void setrowCount(int rowCount) {
  this.rowCount = rowCount;
 }      
}


When I execute page calling this code I get the following exception

org.apache.ojb.broker.PersistenceBrokerException: No Implementors declared for interface MyCount
        at org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields(ClassDescriptor.java:1000)
        at org.apache.ojb.broker.accesslayer.RsIterator.getIdentityFromResultSet(RsIterator.java:387)
        at org.apache.ojb.broker.accesslayer.SqlBasedRsIterator.getObjectFromResultSet(SqlBasedRsIterator.java:61)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:265)
        at org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(PersistenceBrokerImpl.java:1462)
        at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307)
        at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307)
        at com.hostReservation.businessobjectsproviders.EventProvider.getSearchTotalRows(EventProvider.java:29)
        at com.hostReservation.actions.SearchEventAction.execute(SearchEventAction.java:100)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:595)


Any Idea why this is coming???


Regards
Bikram B Kapoor

Re: Help required

Posted by Thomas Dudziak <to...@first.fhg.de>.
Bikram B Kapoor wrote:

>Hi All,
>I have just made an entry like 
>  <class-descriptor
>      class="MyCount"
>   >
>      <field-descriptor id="1"
>         name="rowCount"
>         column="rowCount"
>         jdbc-type="INTEGER"/>
>   </class-descriptor>
>
>in repository_user.xml file. I have created this file for counting the number of results returned by a query.
>
>the MyCount file contains the following code:
>public class MyCount implements java.io.Serializable {
>
> 
>private int rowCount;
>
> public MyCount() {
> }
> 
> 
>public int getrowCount() {
>  return rowCount;
> }
> 
> public void setrowCount(int rowCount) {
>  this.rowCount = rowCount;
> }      
>}
>
>  
>
You didn't specify a table for your class (which is why OJB assumes that 
it is an interface/abstract class).
Btw according to the java bean spec the accessors for rowCount must be 
named getRowCount/setRowCount (notice the uppercase R).

Tom


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Help required

Posted by Armin Waibel <ar...@apache.org>.
Sorry, but Tom is right. Without a valid table name OJB could not build 
select statements.

Assume this post reference to the post you made before "Help Needed with 
Count and complex queries". Why you want introduce the MyCount class? Is 
this class really needed?

if you want to do a real sql query like

<snip previous post>
public int getTotalCount(String searchCriteria)
{
     String strSql = "select count(*) as rowCount from organization 
A,event B ,person C where B.person_id=C.person_id and C.orgid=A.orgid " 
+ searchCriteria;
     QueryBySQL query = QueryFactory.newQuery(MyCount.class, strSql);
     MyCount CountObj = (MyCount) broker.getObjectByQuery(query);
     return CountObj.getrowCount();
}
</snip>

you have to deal with jdbc
http://db.apache.org/ojb/docu/guides/connection.html#obtain-connection

also it is possible to use a Query and getCount method (assume you want 
to count the Persons, so use C.person_id and Person.class)

public int getTotalCount(String searchCriteria)
{
     String strSql = "select C.person_id from organization A,event B 
,person C where B.person_id=C.person_id and C.orgid=A.orgid " + 
searchCriteria;
     QueryBySQL query = QueryFactory.newQuery(Person.class, strSql);
     return broker.getCount(query);
}
more info see
http://db.apache.org/ojb/docu/faq.html#performSQL

If OJB known about 'organization', 'person', 'event' tables (persistent 
classes exist for this tables), it should also possible to build a query 
using Criteria objects (without handling pure SQL) and PB.getCount method.

regards,
Armin


Armin Waibel wrote:
> Hi Bikram,
> 
> try to set primarykey="true" in field-descriptor.
>
> regards,
> Armin
> 
> 
> Bikram B Kapoor wrote:
> 
>> Hi All,
>> I have just made an entry like   <class-descriptor
>>       class="MyCount"
>>    >
>>       <field-descriptor id="1"
>>          name="rowCount"
>>          column="rowCount"
>>          jdbc-type="INTEGER"/>
>>    </class-descriptor>
>>
>> in repository_user.xml file. I have created this file for counting the 
>> number of results returned by a query.
>>
>> the MyCount file contains the following code:
>> public class MyCount implements java.io.Serializable {
>>
>>  
>> private int rowCount;
>>
>>  public MyCount() {
>>  }
>>  
>>  
>> public int getrowCount() {
>>   return rowCount;
>>  }
>>  
>>  public void setrowCount(int rowCount) {
>>   this.rowCount = rowCount;
>>  }      }
>>
>>
>> When I execute page calling this code I get the following exception
>>
>> org.apache.ojb.broker.PersistenceBrokerException: No Implementors 
>> declared for interface MyCount
>>         at 
>> org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields(ClassDescriptor.java:1000) 
>>
>>         at 
>> org.apache.ojb.broker.accesslayer.RsIterator.getIdentityFromResultSet(RsIterator.java:387) 
>>
>>         at 
>> org.apache.ojb.broker.accesslayer.SqlBasedRsIterator.getObjectFromResultSet(SqlBasedRsIterator.java:61) 
>>
>>         at 
>> org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:265)
>>         at 
>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(PersistenceBrokerImpl.java:1462) 
>>
>>         at 
>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307) 
>>
>>         at 
>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307) 
>>
>>         at 
>> com.hostReservation.businessobjectsproviders.EventProvider.getSearchTotalRows(EventProvider.java:29) 
>>
>>         at 
>> com.hostReservation.actions.SearchEventAction.execute(SearchEventAction.java:100) 
>>
>>         at 
>> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446) 
>>
>>         at 
>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266) 
>>
>>         at 
>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
>>         at 
>> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>         at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>>
>>         at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>>
>>         at 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>>
>>         at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>         at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>         at 
>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>>
>>         at 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>>
>>         at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>         at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>         at 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>>
>>         at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>         at 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>>
>>         at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>>
>>         at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>         at 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>>
>>         at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>         at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>         at 
>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>         at 
>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>>         at 
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>>
>>         at 
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>>
>>         at 
>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>>
>>         at 
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>>
>>         at java.lang.Thread.run(Thread.java:595)
>>
>>
>> Any Idea why this is coming???
>>
>>
>> Regards
>> Bikram B Kapoor
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Help required

Posted by Armin Waibel <ar...@apache.org>.
Hi Bikram,

try to set primarykey="true" in field-descriptor.

regards,
Armin


Bikram B Kapoor wrote:
> Hi All,
> I have just made an entry like 
>   <class-descriptor
>       class="MyCount"
>    >
>       <field-descriptor id="1"
>          name="rowCount"
>          column="rowCount"
>          jdbc-type="INTEGER"/>
>    </class-descriptor>
> 
> in repository_user.xml file. I have created this file for counting the number of results returned by a query.
> 
> the MyCount file contains the following code:
> public class MyCount implements java.io.Serializable {
> 
>  
> private int rowCount;
> 
>  public MyCount() {
>  }
>  
>  
> public int getrowCount() {
>   return rowCount;
>  }
>  
>  public void setrowCount(int rowCount) {
>   this.rowCount = rowCount;
>  }      
> }
> 
> 
> When I execute page calling this code I get the following exception
> 
> org.apache.ojb.broker.PersistenceBrokerException: No Implementors declared for interface MyCount
>         at org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields(ClassDescriptor.java:1000)
>         at org.apache.ojb.broker.accesslayer.RsIterator.getIdentityFromResultSet(RsIterator.java:387)
>         at org.apache.ojb.broker.accesslayer.SqlBasedRsIterator.getObjectFromResultSet(SqlBasedRsIterator.java:61)
>         at org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:265)
>         at org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(PersistenceBrokerImpl.java:1462)
>         at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307)
>         at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(DelegatingPersistenceBroker.java:307)
>         at com.hostReservation.businessobjectsproviders.EventProvider.getSearchTotalRows(EventProvider.java:29)
>         at com.hostReservation.actions.SearchEventAction.execute(SearchEventAction.java:100)
>         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
>         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
>         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
>         at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
>         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
>         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
>         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
>         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
>         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
>         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
>         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
>         at java.lang.Thread.run(Thread.java:595)
> 
> 
> Any Idea why this is coming???
> 
> 
> Regards
> Bikram B Kapoor

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org