0

我正在尝试使用 morphia 框架启动 spring 应用程序以创建一些与 mongodb 一起使用的 web 应用程序

好吧,我有一些抽象实体

public abstract class AbstractEntity {
    @Id
    protected ObjectId id;
    // getters, setters
}

我也有这个抽象实体的一些抽象道

public abstract class AbstractDao<T extends AbstractEntity> extends BasicDAO<T, ObjectId> {
    protected AbstractDao(Mongo mongo, Morphia morphia, String dbName) {
        super(mongo, morphia, dbName);
    }
    //some methods
}

我也有一些抽象动作

public abstract class AbstractAction {
    protected ActionType actionType;
    protected int dynamicWeight;
    protected Date createDate;
    // getters, setters
}

我有一些更具体的实体,比如存储在列表中的一些动作的动作实体

public abstract class ActionEntity<T extends AbstractAction> extends AbstractEntity {
    protected List<T> actions;
    // getters, setters
}

动作可以是喜欢、评论等,它们有自己的类,比如

public class LikeAction extends AbstractAction implements ICombinable { 
    protected ObjectId authorId;
    protected ObjectId sourceId;
    //getters, setters and overrided equals();
}

最后,我有存储例如喜欢的实体

public class LikeActionEntity extends ActionEntity<LikeAction> {    
}

以及此类实体的 da

public class LikeActionDao extends AbstractDao<LikeActionEntity> {
    protected LikeActionDao(Mongo mongo, Morphia morphia, String dbName) {
        super(mongo, morphia, dbName);
    }   
}

在应用程序上下文中,我有这样的 bean

<bean class="com.foo.app.dao.action.LikeActionDao" id="likeActionDao">
    <constructor-arg ref="mongo" index="0"/>
    <constructor-arg ref="morphia" index="1"/>
    <constructor-arg ref="database" index="2"/>
</bean>
<bean class="com.mongodb.Mongo" id="mongo">
    <constructor-arg value="127.0.0.1:27017" index="0" />
</bean>
<bean id="morphia" class="com.google.code.morphia.Morphia" />
<bean class="java.lang.String" id="database">
    <constructor-arg value="database" />
</bean> 

但是当我尝试运行 spring 应用程序时,我得到下一个异常

线程“主”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [app-config.xml] 中定义名称为“likeActionDao”的 bean 创建错误:bean 的实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [com.foo.app.dao.action.LikeActionDao]:构造函数抛出异常;嵌套异常是 java.lang.RuntimeException: bad type, not parameterized...

我做错了什么?

4

2 回答 2

1

似乎这是morhia问题

尽量不要使用 AbstractDao 并直接从 BasicDAO 扩展您的 LikeActionDao。还尝试使 LikeActionEntity 不参数化。

于 2013-04-19T12:17:12.810 回答
0

您拥有的配置文件缺少数据库的配置。,

<bean class="java.lang.String" id="database">
     <constructor-arg value="database" /> </bean>

您可能想为它定义一些值。

于 2013-04-18T21:05:41.167 回答