This one time, at band camp, Halder, Sisir(Cognizant) said:
HS>I have been trying to use Castor JDO for retrieving data from a select-based stored
procedure. But I am getting
HS>the following exception:
HS>
HS>org.exolab.castor.jdo.PersistenceException: Complex type not accepted!
HS> at org.exolab.castor.persist.ClassMolder.setIdentity(ClassMolder.java:2743)
HS> at org.exolab.castor.persist.ClassMolder.load(ClassMolder.java:707)
HS> at org.exolab.castor.persist.LockEngine.load(LockEngine.java:359)
HS> at
org.exolab.castor.persist.TransactionContext.load(TransactionContext.java:649)
HS> at org.exolab.castor.persist.QueryResults.fetch(QueryResults.java:229)
HS> at
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:641)
HS> at
org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:624)
HS> at TestJDO.main(TestJDO.java:27)
HS>Exception in thread "main"
HS>
HS>I searched throug the castor site, but did not get any possible solution for this.
Would anybody please help me out on this error?
HS>Thanks in advance,
HS>Sisir
HS>
HS>
HS>Here is the code:
HS>
HS>==================== Main Class ========================
HS>JDO jdo = new JDO("mydb");
HS>jdo.setConfiguration("database.xml");
HS>
HS>// Open a connection to the database
HS>Database db = jdo.getDatabase();
HS>
HS>OQLQuery oql;
HS>QueryResults results;
HS>
HS>db.begin();
HS>// Construct a new query and bind its parameters
HS>oql = db.getOQLQuery( "CALL sp_person AS PersonData" );
HS>//oql.bind( groupId );
HS>// Retrieve results and print each one
HS>results = oql.execute();
HS>System.out.println(results);
HS>
HS>while ( results.hasMore() ) {
HS> PersonData person;
HS>
HS> person = (PersonData) results.next();
HS> System.out.println(person);
HS> System.out.println(person.getName() + " : " + person.getAge());
HS>}
HS>// Explicitly close the QueryResults
HS>results.close();
HS>// Explicitly close the OQLQuery
HS>oql.close();
HS>// Explicitly commit transaction
HS>db.commit();
HS>db.close();
HS>
HS>========================================================
HS>
HS>============ PersonData Object ===========================
HS>public class PersonData
HS>{
HS> private String name;
HS> private String age;
HS> private String pid;
HS>
HS> public PersonData(){}
HS> public PersonData(String sname, String nage){
HS> name = sname;
HS> age = nage;
HS> }
HS>
HS> public void setPid(String nid){
HS> pid = nid;
HS> }
HS> public String getPid(){
HS> return pid;
HS> }
HS>
HS> public void setName(String sname){
HS> name = sname;
HS> }
HS>
HS> public String getName(){
HS> return name;
HS> }
HS>
HS>
HS>
HS> public void setAge(String nage){
HS> age = nage;
HS> }
HS>
HS> public String getAge(){
HS> return age;
HS> }
HS>}
HS>=================================================
HS>
HS>========= Mapping xml ==========================
HS><mapping>
HS>
HS> <class name="PersonData" identity="pid">
HS> <map-to table="Person" />
HS> <field name="pid" type="string">
HS> <sql name="pid" type="char"/>
HS> </field>
HS> <field name="name" type="string">
HS> <sql name="name" type="char" />
HS> </field>
HS> <field name="age" type="string">
HS> <sql name="age" type="char"/>
HS> </field>
HS> </class>
HS>
HS></mapping>
HS>==================================================
HS>
HS>======= Stored Procedure =========================
HS>create proc sp_person
HS>as
HS>begin
HS>select pid, name, age from Person;
HS>end
HS>=================================================
I've never used stored procedures with Castor. There is an example of
their use in the JDO tests. See the following files:
src/tests/jdo/StoredProcedure.java (this uses jdo.TestObject)
src/tests/jdo/mapping.xml (search for jdo.TestObject)
src/tests/jdo/oracle.sql (search for proc_check_permissions)
These files are available in a source download or in CVS.
Bruce
--
perl -e 'print unpack("u30","<0G)[EMAIL PROTECTED]&5R\"F9E<G)E=\$\!F<FEI+F-O;0\`\`");'
The Castor Project
http://www.castor.org/
Apache Geronimo
http://incubator.apache.org/projects/geronimo.html
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev