0

错误消息:没有在类“UserDaoImpl”中定义的具有 1 个参数的构造函数 [配置集:myProject/web-context]

在阅读了几个其他类似的问题后,验证了类中的所有构造函数都以相同的类名命名,都是公共访问修饰符类型,并且构造函数中没有返回类型。

仍然在 hibernate.cfg.xml 中显示此错误消息

<bean id="userDaoImpl" class="com.company.users.dao.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"></property>        
</bean>

而且,这是 UserDaoImpl 类中的构造函数代码。

public UserDaoImpl(SessionFactory sessionFactory) {
    super();
    this.sessionFactory = sessionFactory;
}

@Gusman [加法]

休眠会话工厂

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource"/>
    </property>
    <property name="mappingResources">
        <list>
            <value>/resources/hibernate/User.hbm.xml</value>
            <value>/resources/hibernate/UserRole.hbm.xml</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>
        </props>
    </property>
</bean>

@hooknc [加法]

这是 UserDaoImpl 文件中的设置器代码。

private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
    return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}
4

1 回答 1

0

如果您更仔细地查看您的 spring 配置文件,您会发现您正在尝试在UserDaoImpl. 根据您的UserDaoImpl类,您有一个构造函数,该构造函数采用SessionFactory. 导致错误是因为spring试图调用零参数构造函数UserDaoImpl但没有。

只有构造函数需要一个SessionFactory.

如果您将 spring 配置文件更改为使用构造函数值,则一切都应该正常:

<bean id="userDaoImpl" class="com.company.users.dao.UserDaoImpl">
    <constructor-arg name="sessionFactory" ref="sessionFactory"/>
</bean>
于 2016-06-01T05:33:38.260 回答