簡體   English   中英

dao中的泛型類型在春季應用中

[英]generic types in dao in spring application

我正在嘗試使用morphia框架啟動spring應用程序以創建一些可與mongodb一起使用的網絡應用

好吧,我有一些抽象實體

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> {    
}

和道為該實體

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

線程“主”中的異常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:類型錯誤,未參數化...

我做錯了什么?

看來這是Morhia 問題

嘗試不使用AbstractDao並直接從BasicDAO擴展LikeActionDao。 還請嘗試使LikeActionEntity不受參數設置。

您擁有的配置文件缺少數據庫的配置。

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

您可能需要為其定義一些值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM