gpt4 book ai didi

java - Hibernate 无法确定类型

转载 作者:行者123 更新时间:2023-12-01 11:12:07 25 4
gpt4 key购买 nike

当我启动 Spring Hibernate 应用程序时,出现此错误:

创建名称为“manageUserDAO”的 bean 时出错: Autowiring 依赖项注入(inject)失败;嵌套异常是 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)]

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

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();
}


}

角色:

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

管理用户DAO:

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


}

角色DAOImpl:

public class RolesDAOImpl implements RolesDAO {
@Autowired
private SessionFactory sessionFactory;

private Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}

public Roles getRoles(int idRole) {
Roles role = (Roles) getCurrentSession().load(Roles.class, idRole);
return role;
}
}

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

欢迎任何帮助!谢谢

最佳答案

您正在尝试将 intUser 类中的 @ManyToOne 进行映射。您应该映射一个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;
}

关于java - Hibernate 无法确定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com