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