无法通过Hibernate确定类型

时间:2015-08-26 09:44:58

标签: java spring hibernate

当我启动Spring Hibernate App时,我收到此错误:

创建名为'manageUserDAO'的bean时出错:注入自动连接的依赖项失败;嵌套异常是@Inherited

我不是J2EE的真正大师,这几乎是我的第一个高级应用程序。我不知道那里发生了什么,这是我的用户和角色模型:

org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory edusef.dao.ManageUserDAO.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SessionFactory' defined in ServletContext resource [/WEB-INF/application-context.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: edusef.model.Roles, at table: USER, for columns: [org.hibernate.mapping.Column(roles)]

角色:

package edusef.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.CascadeType;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import javax.persistence.ManyToOne;
import java.util.Date;



@Entity
@Table (name="USER")
public class User {
    private int idUser;
    private String NomUser;
    private String PrenUser;
    private String MailUser;
    private String AdressUser;
    private int PhoneUser;
    private Date DateNaissanceUser;
    private int AccountStatus;
    private String Password;
    private String Login;
    private char SexeUser;
    private String ImagePath;
     private int idRole;


     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     @Column(name="IDUSER", unique = true, nullable = false)
     public int getidUser() {     return idUser;     }
     public void setidUser(int iduser) {      this.idUser = iduser;  }

     @Column(name="NOMUSER", nullable = false)
     public String getNomUser() {     return NomUser;    }
     public void setNomUser(String nomUser) {     this.NomUser = nomUser;    }

     @Column(name="PRENUSER", nullable = false)
     public String getPrenUser() {    return PrenUser;   }
     public void setPrenUser(String prenUser) {   this.PrenUser = prenUser;  }

     @Column(name="MAILUSER", nullable = false)
     public String getMailUser() {    return MailUser;   }
     public void setMailUser(String mailUser) {   this.MailUser = mailUser;  }

     @Column(name="ADRESSUSER", nullable = false)
     public String getAdressUser() {      return AdressUser;     }
     public void setAdressUser(String adressUser) {   this.AdressUser = adressUser;  }

     @Column(name="PHONEUSER", nullable = false)
     public int getPhoneUser() {      return PhoneUser;      }
     public void setPhoneUser(int phoneUser) {    this.PhoneUser = phoneUser;    }

     @Column(name="DATENAISSANCEUSER", nullable = false)
     public Date getDateNaissanceUser() {     return DateNaissanceUser;      }
     public void setDateNaissanceUser(Date dateNaissanceUser) {   this.DateNaissanceUser = dateNaissanceUser;    }

     @Column(name="ACCOUNTSTATUS", nullable = false)
     public int getAccountStatus() {      return AccountStatus;      }
     public void setAccountStatus(int accountStatus) {    this.AccountStatus = accountStatus;    }

     @Column(name="PASSWORD", nullable = false)
     public String getPassword() {    return Password;   }
     public void setPassword(String password) {   this.Password = password;  }

     @Column(name="LOGIN", nullable = false)
     public String getLogin() {   return Login;      }
     public void setLogin(String login) {     this.Login = login;    }

     @Column(name="SEXEUSER", nullable = false)
     public char getSexeUser() {      return SexeUser;   }
     public void setSexeUser(char sexeUser) {     this.SexeUser = sexeUser;  }

     @Column(name="IMAGEPATH", nullable = true)
     public String getImagePath() {   return ImagePath;      }
     public void setImagePath(String imagePath) {     this.ImagePath = imagePath;    }

     @ManyToOne(cascade = CascadeType.ALL)
     @JoinColumn(name="IDROLE", nullable=false)
    public int getidRole() {      return idRole;     }
    public void setidRole(int idRole) {   this.idRole = idRole;  }
     private Roles roles;
    public Roles getRoles() {
        return roles;
    }
    public void setRoles(Roles roles) {
        this.roles = roles;
    }

     @Override
     public String toString() {
      StringBuffer strBuff = new StringBuffer();
      strBuff.append("idUser : ").append(getidUser());
      strBuff.append(", NomUser : ").append(getNomUser());
      strBuff.append(", PrenUser : ").append(getPrenUser());
      strBuff.append(", MailUser : ").append(getMailUser());
      strBuff.append(", AdressUser : ").append(getAdressUser());
      strBuff.append(", PhoneUser : ").append(getPhoneUser());
      strBuff.append(", DateNaissanceUser : ").append(getDateNaissanceUser());
      strBuff.append(", AccountStatus : ").append(getAccountStatus());
      strBuff.append(", Password : ").append(getPassword());
      strBuff.append(", Login : ").append(getLogin());
      strBuff.append(", SexeUser : ").append(getSexeUser());
      strBuff.append(", ImagePath : ").append(getImagePath());
      // strBuff.append(", idRole : ").append(getidRole());
      return strBuff.toString();
     }


}

ManageUserDAO:

package edusef.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import javax.persistence.Table;

@Entity
@Table (name="ROLES")
public class Roles {

    private int idRole;
    private String Role;

    @Id
    @Column(name="IDROLE", unique = true, nullable = false)
    public int getIdRole() {    return idRole;  }
    public void setIdRole(int idRole) { this.idRole = idRole;   }

    @Column(name="ROLES", nullable = false)
    public String getRole() { return Role;  }
    public void setRole(String role) {  Role = role;    }
}

RolesDAOImpl:

package edusef.dao;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import edusef.model.User;

import java.util.List;

@Repository
public class ManageUserDAO {

    public @interface ComponentScan {

    }
    @Autowired
    private SessionFactory sessionFactory;
    public SessionFactory getSessionFactory() { return sessionFactory; }
    public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}


    public void addUser(User user) {
        getSessionFactory().getCurrentSession().save(user);
    }

    public void deleteUser(User user) {
        getSessionFactory().getCurrentSession().delete(user);
    }

    public void updateUser(User user) {
        getSessionFactory().getCurrentSession().update(user);
    }

    public User getUserById(int id) {
        List list = getSessionFactory().getCurrentSession().createQuery("from User where id=?").setParameter(0, id).list();
        return (User)list.get(0);
    }

    public List<User> getUsers() {
        List list = getSessionFactory().getCurrentSession().createQuery("from User").list();
        return list;
    }


}

我的逻辑是每个用户都有一个角色(ManyToOne),每个角色都可以被许多用户使用。 User.idRole实体应返回User的idRole,并根据它在Spring Security上测试用户角色。

欢迎任何帮助!感谢

1 个答案:

答案 0 :(得分:1)

您正在尝试在int课程中将@ManyToOneUser进行对比。您应该映射Role而不是。

从此部分移除getIdRole()setIdRole()方法,它们不属于那里。

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="IDROLE", nullable=false)
public int getidRole() {      return idRole;     }
public void setidRole(int idRole) {   this.idRole = idRole;  }
private Roles roles;
public Roles getRoles() {
    return roles;
}