Well, here I am again ;-)
Please forgive me if it is a silly mistake, but I am a newbe, it is 11PM and I am
still stuck on this ;-|
I am experiencing 2 strange behaviors of JDO working with MySQL. First is that it
crashes or not depending if run normally or debugged step by step. The other is that
it can't find the mapping for a class, despite the fact that it is there (although DB
table has more fields than the class)...
I would really appreciate any help - deadlines are closing...
1. Erratic behavior:
When I run my simple test application normally, then I get the following exception:
toString: org.exolab.castor.jdo.DatabaseNotFoundException: Nested error:
java.lang.NullPointerException
Stack trace:
org.exolab.castor.jdo.JDO.getDatabase(JDO.java:605)
castorTest.testJDO(castorTest.java:81)
castorTest.main(castorTest.java:26)
I found out that it is really thrown in line 283 of DatabaseRegistry.java - on the
following line:
dbs = new DatabaseRegistry( database.getName(), mapping.getResolver( Mapping.JDO,
factory ), factory, database.getDriver().getUrl(), props );
Surprisingly, when I debug it step by step, then it goes through and gets the Database
object.
Any ideas what can it be? I am puzzled.
2. Mapping not found
But even if I get through getDatabase, then another exception is thrown, when I try to
define a query:
OQLQuery query = db.getOQLQuery("SELECT s FROM LFSMarkets s WHERE searchTime=$1 AND
marketOrig=$2 AND marketDest=$3");
The exception is:
toString: org.exolab.castor.jdo.QueryException: Could not find mapping for class
LFSMarkets
Stack trace:
org.exolab.castor.jdo.oql.ParseTreeWalker.checkFromPart(ParseTreeWalker.java:305)
org.exolab.castor.jdo.oql.ParseTreeWalker.checkErrors(ParseTreeWalker.java:222)
org.exolab.castor.jdo.oql.ParseTreeWalker.<init>(ParseTreeWalker.java:137)
org.exolab.castor.jdo.engine.OQLQueryImpl.create(OQLQueryImpl.java:261)
org.exolab.castor.jdo.engine.DatabaseImpl.getOQLQuery(DatabaseImpl.java:439)
castorTest.testJDO(castorTest.java:86)
castorTest.main(castorTest.java:26)
Gory details follow:
Mapping.LFSMarkets.xml:
<mapping>
<class name="LFSMarkets" identity="searchTime marketOrig marketDesc
advPurchase satNightStay">
<map-to table="LFSMarkets"/>
<field name="searchTime" type="java.sql.Timestamp" direct="true">
<sql name="SearchTime"/>
</field>
<field name="marketOrig" type="string" direct="true">
<sql name="MarketOrig" type="char"/>
</field>
<field name="marketDest" type="string" direct="true">
<sql name="MarketDest" type="char"/>
</field>
<field name="advPurchase" type="short" direct="true">
<sql name="AdvPurchase" type="smallint"/>
</field>
<field name="satNightStay" type="byte" direct="true">
<sql name="SatNightStay" type="tinyint"/>
</field>
</class>
</mapping>
Config file:
<database name="JRIntl" engine="mysql" >
<driver url="jdbc:mysql://rm.xxxxx.com:3306/JRIntl"
class-name="com.mysql.jdbc.Driver">
<param name="user" value="xx" />
<param name="password" value="xxxxxxxxx" />
</driver>
<mapping href="Mapping.LFSMarkets.xml" />
</database>
My test code, that is executed:
JDO jdo;
Database db;
jdo = new JDO();
jdo.setDatabaseName( "JRIntl" );
jdo.setConfiguration( "MySQL.xml" );
jdo.setClassLoader(jdo.getClass().getClassLoader());
try
{
db = jdo.getDatabase();
db.begin();
OQLQuery query = db.getOQLQuery("SELECT s FROM LFSMarkets s
WHERE searchTime=$1 AND marketOrig=$2 AND marketDest=$3");
query.bind("2004-05-11 10:34:00");
query.bind("DFW");
query.bind("AMS");
QueryResults results = query.execute();
System.out.println(results.size());
LFSMarkets myShop = (LFSMarkets)results.next();
db.commit();
db.close();
}
Table LFSMarkets:
SearchTime datetime PRI
MarketOrig char(3) PRI
MarketDest char(3) PRI
AdvPurchase smallint(6) PRI
SatNightStay tinyint(1) PRI
DepartDate date
ReturnDate date
TotalSearchTime time
RetrieverCount smallint(6)
RunID varchar(30)
ZipFileProcessed tinyint(1)
LowestFare decimal(8,2)
Thanks,
Michal
--
Michal Grzemowski
Programmer/Analyst
Sabre Polska Sp z o.o.
ul. Cystersow 13A
31-553 Krakow, Poland
tel: +48 12 295 9056
fax: +48 12 295 9001
----------------------
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-user