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]
