sam.ds.chen 发表于 2013-1-29 23:03:04

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]
查看完整版本: Grails+Db4o整合中的GenericObject问题