【发布时间】:2017-03-22 09:51:00
【问题描述】:
所以我正在构建一个 spring 3.2.3.RELEASE / hibernate 4.0.1.FINAL 应用程序,我得到了以下异常
[2017-03-22 09:29:47,860] 调试 org.springframework.beans.factory.support.DefaultListableBeanFactory [localhost-startStop-1] 在 FactoryBean 类型检查中忽略 bean 创建异常:org.springframework.beans.factory .BeanCreationException:在 URL [jar:file:/D:/Programmes/apache-tomcat-7.0.33/webapps/perWeb/WEB-INF/lib/perService-2.0.jar!/ applicationContext-transactional-service.xml]:在设置 bean 属性“target”时无法解析对 bean“loginServiceImpl”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在 URL [jar:file:/D:/Programmes/apache-tomcat-7.0.33/webapps/perWeb/WEB-INF 中定义名称为“loginServiceImpl”的 bean 创建错误/lib/perService-2.0.jar!/applicationContext-simple-service.xml]:初始化bean失败;嵌套异常是 org.springframework.beans.ConversionNotSupportedException:无法将类型“ma.dao.impl.GenericDAO”的属性值转换为属性“dao”所需的类型“ma.dao.IGenericDAO”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [ma.dao.impl.GenericDAO] 的值转换为属性“dao”所需的类型 [ma.dao.IGenericDAO]:找不到匹配的编辑器或转换策略
这是我的 bean:登录服务
<bean id="loginService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManagerPER" />
</property>
<property name="target">
<ref bean="loginServiceImpl" />
</property>
<property name="transactionAttributes">
<props>
<prop key="loadUserByUsername">
PROPAGATION_REQUIRED,-Exception
</prop>
</props>
</property>
</bean>
loginServiceImpl
<bean id="loginServiceImpl"
class="ma.service.login.LoginService">
<property name="dao">
<ref bean="userDAO" />
</property>
</bean>
用户DAO
<bean id="userDAO"
class="ma.dao.impl.GenericDAO">
<constructor-arg>
<value>
ma.dao.mappings.Utilisateur
</value>
</constructor-arg>
<property name="sessionFactory">
<ref bean="sessionFactoryPER" />
</property>
</bean>
Utilisateur.Java
@Entity
@NamedQueries(
{
@NamedQuery(name="findUtilisateurByName",
query = "select user from Utilisateur user where user.login=:userName"
)
}
)
public class Utilisateur implements java.io.Serializable {
private static final long serialVersionUID = 7214071893495381842L;
private Integer id;
private Profil profil;
private String nom;
private String prenom;
private String login;
private String passwd;
public Utilisateur() {
}
public Utilisateur(Integer id) {
this.id = id;
}
@Id @GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@ManyToOne
public Profil getProfil() {
return profil;
}
public void setProfil(Profil profil) {
this.profil = profil;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
我错过了什么吗? 如果您需要更多信息,请告诉我
【问题讨论】:
-
好像ma.dao.impl.GenericDAO没有实现ma.dao.IGenericDAO
-
你是对的,这就是问题所在。感谢您的快速回答