Spring和Hibernate Runtime错误

时间:2012-04-25 19:07:39

标签: java eclipse spring hibernate runtime

我的日食会出现以下错误。我只是想保存一个terminalgroup对象,并且收到有关未找到TerminalGroupImpl的错误。所以我创建了一个TerminalGroupImpl.java作为一个hibernate文件,它具有terminal_group表的@Entity。我有一个TerminalGroupDaoHibernate.java文件,它使用TerminalGroupImpl.class在terminal_group表上执行查询。

如果有人可以告诉我我的代码有什么问题和/或我能做些什么来弄清楚什么是错的?

错误

Invalid property 'terminalGroupDaoHibernate' of bean class
[com.ccadllc.dac.model.consumer.terminalgroups.TerminalGroupServiceImpl]: 
Bean property 'terminalGroupDaoHibernate' is not writable or has an invalid setter method. 
Does the parameter type of the setter match the return type of the getter?

这是我的applicationContext.xml文件:

<!-- Terminal Group Service -->
<bean id="com.ccadllc.dac.model.consumer.terminalgroups.TerminalGroupService"
    class="com.ccadllc.dac.model.consumer.terminalgroups.TerminalGroupServiceImpl">
 <property name="terminalGroupDao"   
ref="com.ccadllc.dac.model.consumer.terminalgroups.dao.TerminalGroupDao"/>
 <property name="terminalGroupComponentDao" 
ref="com.ccadllc.dac.model.consumer.terminalgroups.dao.TerminalGroupComponentDao"/>
</bean>

<bean id="com.ccadllc.dac.model.consumer.terminalgroups.TerminalGroupImpl"
    class="com.ccadllc.dac.model.consumer.terminalgroups.TerminalGroupImpl" abstract="true">
    <property name="terminalGroupDaoHibernate" 
ref="com.ccadllc.dac.model.consumer.terminalgroups.dao.TerminalGroupDaoHibernate"/>
</bean>

<bean id="com.ccadllc.dac.model.consumer.terminalgroups.dao.TerminalGroupDao"
    class="com.ccadllc.dac.model.consumer.terminalgroups.dao.TerminalGroupDaoHibernate">
        <property name="messageService" ref="com.ccadllc.dac.messaging.MessagingService" /> 
</bean>

under hibernate.annotated.classes:                  
<value>com.ccadllc.dac.model.consumer.terminalgroups.TerminalGroupImpl</value>

TerminalGroupServiceImpl.java

Getter/Setter in TerminalGroupServiceImpl.java:
private TerminalGroupDao terminalGroupHibernateDao;
 /**
 * @param TerminalGroupHibernateDao The TerminalGroupHibernateDao to set.
 */
@Required
@Transactional
public void setTerminalGroupHibernateDao(final TerminalGroupDao terminalGroupHibernateDao)
{
    this.terminalGroupHibernateDao = terminalGroupHibernateDao;
}

@Required
@Transactional
public TerminalGroupDao getTerminalGroupHibernateDao()
{
    return terminalGroupHibernateDao;
}

3 个答案:

答案 0 :(得分:0)

您正在尝试设置terminalGroupDaoHibernate属性而不是terminalGroupHibernateDao。

答案 1 :(得分:0)

您在xml中定义的属性是“terminalGroupDaoHibernate”,但服务impl名称中的setter是“setTerminalGroupHibernateDao”。有拼写错误。 setter名称应为“setTerminalGroupDaoHibernate”

答案 2 :(得分:0)

您不应在getter上添加@Required注释。此外,在bean xml中,您使用属性名称terminalGroupDao,但您的setter的名称为setTerminalGroupHibernateDao,而不是setTerminalGroupDao