Hallo
I'm using OObjectDatabaseTx. I have bunch of simple objects Trade. They
have only primitive attributes. No links no lazyload. I can load them
right with:
select from Trade order by @rid desc
Vaadin gui is acessing properties of Trade. It works for first 20 Trades
sometimes more. Then I start getting
Caused by: java.lang.NullPointerException
at
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.getDocFieldValue(OObjectProxyMethodHandler.java:362)
at
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.getValue(OObjectProxyMethodHandler.java:300)
at
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.getValue(OObjectProxyMethodHandler.java:288)
at
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.manageGetMethod(OObjectProxyMethodHandler.java:277)
at
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.invoke(OObjectProxyMethodHandler.java:103)
at
cz.sc.simplegui.wr.Trade_$$_javassist_1.getDate(Trade_$$_javassist_1.java)
at cz.sc.simplegui.wr.Trade.getDateDate(Trade.java:131)
which comes from first line of this method:
protected Object getDocFieldValue(final Object self, final String fieldName) {
if (doc.getSchemaClass().existsProperty(fieldName))
return doc.field(fieldName);
else {
OType expected = OObjectEntitySerializer.getTypeByClass(self.getClass(),
fieldName);
if (doc.fieldType(fieldName) != expected)
doc.field(fieldName, doc.field(fieldName), expected);
return doc.field(fieldName);
}
}
where
doc.getSchemaClass()
starts giving null sometimes
I tried to debug this, but it never gives null when I step into this
method. Or I was just unlucky.
I'm using maven with
<orientdb.version>2.0-M3</orientdb.version>
I felt like it could be caching problem so I put
OObjectDatabaseTx db = OObjectDatabasePool.global().acquire(url, dbUser,
passwd);
db.getLocalCache().invalidate();
but it make no difference
the query method is:
public <T extends ObservablePojo> List<T> query(String query, Object... params)
{
long start = System.currentTimeMillis();
query = String.format(query, params);
OObjectDatabaseTx db = getDb();
try {
List<T> ret = getDb().query(new OSQLSynchQuery<T>(query));
log.debug(((double) (System.currentTimeMillis() - start)) / 1000 + "sec
-> QueryMany " + query + " returns " + ret.size());
return ret;
} finally {
db.close();
}
}
so the connection is released after query, iteration of properties happens
later.
I tried this with sun jdk and open jdk on ubuntu with same result.
Now I'm out of ideas. Anybody got same problem ?
Thanks for help
Pavel
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.