Grails+Db4o整合中的GenericObject问题
最近在研究Grails跟db4o的整合。昨天碰到这么一个奇怪的现象:
下面这段代码中的这句
ObjectSet os = getDb4oTemplate().get(new User(params))在dev模式下一直报“... cannot be cast to com.db4o.reflect.generic.GenericObject ...”
而在prod模式就正常
class UserService extends Db4oDaoSupport { def objectContainer def login(params) { ObjectSet os = getDb4oTemplate().get(new User(params)) if(os.size() > 0) { println "user found" params.session.user = os.get(0) } else { println "user not found" } }}
而用SODA写query得到的是com.db4o.reflect.generic.GenericObject类的实例
// ObjectSet os = getDb4oTemplate().get(new User(params)) def tpl = getDb4oTemplate() Query q = tpl.query() q.constrain(User.class) q.descend('username').constrain(params.username) q.descend('password').constrain(params.password) ObjectSet os = q.execute()为什么在dev模式下是GenericObject,而不是我自己的User呢?
我把dev跟prod两种模式下项目目录结构作了对比,有一个显著的区别,就是:前者有个target,下面放着grails/groovy编译得到的classes和其它一些东西;而后者是一标准的J2EE项目的结构,classes都在WEB-INF/classes下,其中就有我的domain class - User。
联想到“The Definitive Guide to Db4o”中的这段话:
<div class="quote_title">The Definitive Guide to Db4o 写道
页:
[1]