2013-04-18 91 views
0

我試圖啓動Spring應用與嗎啡框架來創建一些web應用程序與MongoDB的工作泛型DAO春季申請

好,我有一些抽象的實體

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(); 
} 

最後,我有實體存儲eg喜歡

public class LikeActionEntity extends ActionEntity<LikeAction> {  
} 

和DAO在應用程序上下文等實體

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

我有這樣的豆

<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應用程序,我得到一個異常

線程「main」中的異常org.springframework.beans.factory.BeanCreationException: 在類路徑資源[app-config.xml]中定義名稱爲'likeActionDao'的bean時出錯:bean的實例化失敗;嵌套異常是 org.springframework.beans.BeanInstantiationException:無法實例化bean類 [com.foo.app.dao.action.LikeActionDao]:構造函數拋出異常;嵌套0​​異常是java.lang.RuntimeException:錯誤類型,沒有參數化...

我做錯了什麼?

回答

1

似乎這是morhia issue

儘量不要使用AbstractDao的和BasicDAO直接擴展你的LikeActionDao。 也嘗試使LikeActionEntity不參數化。

+0

似乎是,thx – Xenobyte

0

你擁有的配置文件缺少數據庫的配置,

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

您可能要爲它定義一些價值。

+0

好的,我從xml中刪除likeActionDao bean並試圖獲取數據庫bean,它的工作原理 – Xenobyte