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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to