Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.springframework.beans.factory.BeanCreationException:创建名为';appConfig';:自动关联依赖项的注入失败_Java_Spring_Hibernate_Spring Mvc_Spring Data Jpa - Fatal编程技术网

Java org.springframework.beans.factory.BeanCreationException:创建名为';appConfig';:自动关联依赖项的注入失败

Java org.springframework.beans.factory.BeanCreationException:创建名为';appConfig';:自动关联依赖项的注入失败,java,spring,hibernate,spring-mvc,spring-data-jpa,Java,Spring,Hibernate,Spring Mvc,Spring Data Jpa,我已经在我目前正在进行的项目上添加了一些更改。我有一个用户类和3个不同的配置文件(管理员、医生、患者) 我通过添加两个用户子类(Docteur和Patient)改变了项目的结构,配置文件是User或admin 用户: package com.vivalio.springmvc.model; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.

我已经在我目前正在进行的项目上添加了一些更改。我有一个用户类和3个不同的配置文件(管理员、医生、患者)

我通过添加两个用户子类(Docteur和Patient)改变了项目的结构,配置文件是User或admin

用户

package com.vivalio.springmvc.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.validator.constraints.NotEmpty;

    @Entity
    @Table(name = "USER")
    public class User implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private Integer id;

        @NotEmpty
        @Column(name = "SSO_ID", unique = true, nullable = false)
        private String ssoId;

        @NotEmpty
        @Column(name = "PASSWORD", nullable = false)
        private String password;

        @NotEmpty
        @Column(name = "FIRST_NAME", nullable = false)
        private String firstName;

        @NotEmpty
        @Column(name = "LAST_NAME", nullable = false)
        private String lastName;

        @NotEmpty
        @Column(name = "EMAIL", nullable = false)
        private String email;

        @Column(name = "DTCREATION", nullable = true)
        private String dateCreation;

        @Column(name = "JJCREATION", nullable = true)
        private String jjCreation;

        public String getJjCreation() {
            return jjCreation;
        }

        public void setJjCreation(String jjCreation) {
            this.jjCreation = jjCreation;
        }

        @Column(name = "MMCREATION", nullable = true)
        private String mmCreation;

        public String getMmCreation() {
            return mmCreation;
        }

        public void setMmCreation(String mmCreation) {
            this.mmCreation = mmCreation;
        }

        @Column(name = "YYCREATION", nullable = true)
        private String aaCreation;

        public String getAaCreation() {
            return aaCreation;
        }

        public void setAaCreation(String aaCreation) {
            this.aaCreation = aaCreation;
        }

        public String getDateCreation() {
            return dateCreation;
        }

        public void setDateCreation(String dateCreation) {
            this.dateCreation = dateCreation;
        }

        @NotEmpty
        @ManyToMany(fetch = FetchType.LAZY)
        @JoinTable(name = "USER_USER_PROFILE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = {
                @JoinColumn(name = "USER_PROFILE_ID") })
        private Set<UserProfile> userProfiles = new HashSet<UserProfile>();

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getSsoId() {
            return ssoId;
        }

        public void setSsoId(String ssoId) {
            this.ssoId = ssoId;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getLastName() {
            return lastName;
        }

        public void setLastName(String lastName) {
            this.lastName = lastName;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public Set<UserProfile> getUserProfiles() {
            return userProfiles;
        }

        public void setUserProfiles(Set<UserProfile> userProfiles) {
            this.userProfiles = userProfiles;
        }

        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((id == null) ? 0 : id.hashCode());
            result = prime * result + ((ssoId == null) ? 0 : ssoId.hashCode());
            return result;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (!(obj instanceof User))
                return false;
            User other = (User) obj;
            if (id == null) {
                if (other.id != null)
                    return false;
            } else if (!id.equals(other.id))
                return false;
            if (ssoId == null) {
                if (other.ssoId != null)
                    return false;
            } else if (!ssoId.equals(other.ssoId))
                return false;
            return true;
        }

        @Override
        public String toString() {
            return "User [id=" + id + ", ssoId=" + ssoId + ", password=" + password + ", firstName=" + firstName
                    + ", lastName=" + lastName + ", email=" + email + "]";
        }

    }
 package com.vivalio.springmvc.model;

    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;

    @Entity
    @Table(name = "DOCTEUR")
    public class Docteur extends User implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private Integer id;

        @OneToMany(mappedBy = "doc")
        private Set<Patient> patients = new HashSet<Patient>(0);

        public Set<Patient> getPatients() {
            return patients;
        }

        public void setPatients(Set<Patient> patients) {
            this.patients = patients;
        }

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

    }
package com.vivalio.springmvc.converter;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import com.vivalio.springmvc.model.UserProfile;
import com.vivalio.springmvc.service.UserProfileService;

/**
 * A converter class used in views to map id's to actual userProfile objects.
 */
@Component
public class RoleToUserProfileConverter implements Converter<Object, UserProfile>{

    static final Logger logger = LoggerFactory.getLogger(RoleToUserProfileConverter.class);

    @Autowired
    UserProfileService userProfileService;

    /**
     * Gets UserProfile by Id
     * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
     */
    public UserProfile convert(Object element) {
        Integer id = Integer.parseInt((String)element);
        UserProfile profile= userProfileService.findById(id);
        logger.info("Profile : {}",profile);
        return profile;
    }
}
package com.vivalio.springmvc.controller;

import java.util.Calendar;
import java.util.List;
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.security.authentication.AuthenticationTrustResolver;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.vivalio.springmvc.model.Consultation;
import com.vivalio.springmvc.model.User;
import com.vivalio.springmvc.model.UserProfile;
import com.vivalio.springmvc.model.UserProfileType;
import com.vivalio.springmvc.service.AppetitService;
import com.vivalio.springmvc.service.BouleService;
import com.vivalio.springmvc.service.ConsultationService;
import com.vivalio.springmvc.service.DocteurService;
import com.vivalio.springmvc.service.DouleurService;
import com.vivalio.springmvc.service.FaiblesseService;
import com.vivalio.springmvc.service.PatientService;
import com.vivalio.springmvc.service.UserProfileService;
import com.vivalio.springmvc.service.UserService;
import com.vivalio.springmvc.utils.Mail;

@Controller
@RequestMapping("/")
@SessionAttributes("roles")
public class AppController {

    @Autowired
    UserService userService;

    @Autowired
    UserProfileService userProfileService;

    @Autowired
    AppetitService appetitService;

    @Autowired
    FaiblesseService faiblesseService;

    @Autowired
    DouleurService douleurService;

    @Autowired
    BouleService bouleService;

    @Autowired
    MessageSource messageSource;

    @Autowired
    PersistentTokenBasedRememberMeServices persistentTokenBasedRememberMeServices;

    @Autowired
    AuthenticationTrustResolver authenticationTrustResolver;

    @Autowired
    ConsultationService consultationService;

    @Autowired
    PatientService patientService;

    @Autowired
    DocteurService docteurServices;

    /**
     * This method will list all existing users.
     */
    @RequestMapping(value = { "/", "/list" }, method = RequestMethod.GET)
    public String listUsers(ModelMap model) {

        List<User> users = userService.findAllUsers();
        model.addAttribute("users", users);
        model.addAttribute("loggedinuser", getPrincipal());
        return "userslist";
    }

    /**
     * This method will provide the medium to add a new user.
     */
    @RequestMapping(value = { "/newuser" }, method = RequestMethod.GET)
    public String newUser(ModelMap model) {
        User user = new User();
        model.addAttribute("user", user);
        model.addAttribute("edit", false);
        model.addAttribute("loggedinuser", getPrincipal());
        return "registration";
    }


    @RequestMapping(value = { "/newconsultation" }, method = RequestMethod.GET)
    public String newConsultation(ModelMap model) {
        Consultation consultation = new Consultation();
        model.addAttribute("consultation", consultation);
        model.addAttribute("edit", false);
        model.addAttribute("loggedinuser", getPrincipal());
        return "registrationConsultation";
    }

    @RequestMapping(value = { "/newuser" }, method = RequestMethod.POST)
    public String saveUser(@Valid User user, BindingResult result, ModelMap model) {

        if (result.hasErrors()) {
            return "registration";
        }

        if (!userService.isUserSSOUnique(user.getId(), user.getSsoId())) {
            FieldError ssoError = new FieldError("user", "ssoId", messageSource.getMessage("non.unique.ssoId",
                    new String[] { user.getSsoId() }, Locale.getDefault()));
            result.addError(ssoError);
            return "registration";
        }

        userService.saveUser(user);
        Mail.sendMailRegistration("support@xxxxxxx.net", user.getEmail(), "xxxxxx@gmail.com",
                "xxxxxx@gmail.com", "Creation de compte vivalio", "message");

        model.addAttribute("success",
                "User " + user.getFirstName() + " " + user.getLastName() + " registered successfully");
        model.addAttribute("loggedinuser", getPrincipal());
        // return "success";
        return "redirect:/list";
    }

    /* ajouter la consultation du patient */

    @RequestMapping(value = "/newconsultation", method = RequestMethod.POST)
    public String saveConsultation(@Valid Consultation consultation, BindingResult result, ModelMap model) {

        if (result.hasErrors()) {
            return "registrationConsultation";
        }
        // Patient patient = (Patient) getUser();
        consultation.setPatient(null);
        consultationService.saveConsultation(consultation);

        if (consultation != null && consultation.getPatient() != null) {
            Mail.sendMailAfterConsultation("support@xxxxxxx.net", consultation.getPatient().getEmail(),
                    "xxxxxx@gmail.com", "xxxxxxx@gmail.com", "Envoi de la consultation a votre medecin : ",
                    "Votre consultation REF-" + consultation.getId()
                            + " a ete envoyee a votre medecin avec succes. Vous serez contacte en cas d'urgence.<br/>Ci dessous un recap de votre consultation :<br/>"
                            + "<br/>Poid : " + consultation.getParam1() + "<br/>" + "Appetit :"
                            + consultation.getParam2() + "<br/>" + "Faiblesse :" + consultation.getParam3() + "<br/>"
                            + "Douleur :" + consultation.getParam4() + "<br/>" + "Boule :" + consultation.getParam5()
                            + "<br/>" + "Fievre :" + consultation.getParam6() + "<br/>" + "Commentaire :"
                            + consultation.getCommentaire() + "<br/>" + "<br/>L'equipe vivalio Group"

            );
        }

        model.addAttribute("param1", consultation.getParam1());
        model.addAttribute("param2", consultation.getParam2());
        model.addAttribute("param3", consultation.getParam3());

        model.addAttribute("param4", consultation.getParam4());
        model.addAttribute("param5", consultation.getParam5());
        model.addAttribute("param6", consultation.getParam6());
        model.addAttribute("commentaire", consultation.getCommentaire());

        return "redirect:/list";
    }

    /**
     * This method will provide the medium to update an existing user.
     */
    @RequestMapping(value = { "/edit-user-{ssoId}" }, method = RequestMethod.GET)
    public String editUser(@PathVariable String ssoId, ModelMap model) {
        User user = userService.findBySSO(ssoId);
        model.addAttribute("user", user);
        model.addAttribute("edit", true);
        model.addAttribute("loggedinuser", getPrincipal());
        return "registration";
    }

    @RequestMapping(value = { "/edit-user-{ssoId}" }, method = RequestMethod.POST)
    public String updateUser(@Valid User user, BindingResult result, ModelMap model, @PathVariable String ssoId) {

        if (result.hasErrors()) {
            return "registration";
        }

        userService.updateUser(user);
        Mail.sendMailRegistration("support@xxxxx.net", user.getEmail(), "xxxxxxxx@gmail.com",
                "xxxxxxxx@gmail.com", "Modification des informations vivalio",
                "Votre utilisateur vivalio a été modifié");

        model.addAttribute("success",
                "User " + user.getFirstName() + " " + user.getLastName() + " updated successfully");
        model.addAttribute("loggedinuser", getPrincipal());
        return "redirect:/list";
    }

    /**
     * This method will delete an user by it's SSOID value.
     */
    @RequestMapping(value = { "/delete-user-{ssoId}" }, method = RequestMethod.GET)
    public String deleteUser(@PathVariable String ssoId) {
        userService.deleteUserBySSO(ssoId);
        return "redirect:/list";
    }

    /**
     * This method will provide UserProfile list to views
     */
    @ModelAttribute("roles")
    public List<UserProfile> initializeProfiles() {
        return userProfileService.findAll();
    }

    /**
     * This method will provide Docs list to views
     */
    @ModelAttribute("docteurs")
    public List<User> initializeAllDocs() {
        return userService.findAllDocs();
    }

    /**
     * This method will provide Appetit list to views
     */
    @ModelAttribute("appetits")
    public List<String> initializeAppetits() {
        return appetitService.findAll();
    }

    /**
     * This method will provide Faiblesse list to views
     */
    @ModelAttribute("faiblesses")
    public List<String> initializeFaiblesses() {
        return faiblesseService.findAll();
    }

    /**
     * This method will provide Douleur list to views
     */
    @ModelAttribute("douleurs")
    public List<String> initializeDouleurs() {
        return douleurService.findAll();
    }

    /**
     * This method will provide Boules list to views
     */
    @ModelAttribute("boules")
    public List<String> initializeBoules() {
        return bouleService.findAll();
    }

    /**
     * This method handles Access-Denied redirect.
     */
    @RequestMapping(value = "/Access_Denied", method = RequestMethod.GET)
    public String accessDeniedPage(ModelMap model) {
        model.addAttribute("loggedinuser", getPrincipal());
        return "accessDenied";
    }


    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String loginPage() {
        if (isCurrentAuthenticationAnonymous()) {
            return "login";
        } else {
            return "redirect:/list";
        }
    }


    @RequestMapping(value = "/logout", method = RequestMethod.GET)
    public String logoutPage(HttpServletRequest request, HttpServletResponse response) {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth != null) {
            // new SecurityContextLogoutHandler().logout(request, response,
            // auth);
            persistentTokenBasedRememberMeServices.logout(request, response, auth);
            SecurityContextHolder.getContext().setAuthentication(null);
        }
        return "redirect:/login?logout";
    }

    /**
     * This method returns the principal[user-name] of logged-in user.
     */
    private String getPrincipal() {
        String userName = null;
        Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

        if (principal instanceof UserDetails) {
            userName = ((UserDetails) principal).getUsername();
        } else {
            userName = principal.toString();
        }
        return userName;
    }

    @SuppressWarnings("rawtypes")
    private User getUser() {
        String username = null;
        Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        username = ((UserDetails) principal).getUsername();
        User usr = userService.findBySSO(username);
        return usr;

    }

    /**
     * This method returns true if users is already authenticated [logged-in],
     * else false.
     */
    private boolean isCurrentAuthenticationAnonymous() {
        final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        return authenticationTrustResolver.isAnonymous(authentication);
    }

    /**
     * This method will redirect to dashboard
     */
    @RequestMapping(value = { "/board" }, method = RequestMethod.GET)
    public String tableauBord(ModelMap model, HttpSession session) {

        List<User> users = userService.findAllUsers();

        // TOTAL des utilisateurs de la base
        int totalAdmin = userService.findAllAdmins().size();
        int totalDocs = userService.findAllDocs().size();
        int totalPatients = userService.findAllPatients().size();
        // ANNEE COURANTE
        int year = Calendar.getInstance().get(Calendar.YEAR);
        StringBuilder sbyear = new StringBuilder();
        sbyear.append(year);
        // RECHERCHER LES COMPTES PAR TYPE DE L'ANNEE EN COURS
        List<Object[]> totalComptesAdminParMois = userService
                .findAllUsersByTypeAndyear(UserProfileType.ADMINISTRATEUR.getUserProfileType(), sbyear.toString());
        List<Object[]> totalComptesDocParMois = userService
                .findAllUsersByTypeAndyear(UserProfileType.ADMINISTRATEUR.getUserProfileType(), sbyear.toString());
        List<Object[]> totalComptesPatParMois = userService
                .findAllUsersByTypeAndyear(UserProfileType.UTILISATEUR.getUserProfileType(), sbyear.toString());

        return "board";
    }

}
堆栈跟踪

严重:上下文初始化失败 org.springframework.beans.factory.BeanCreationException:错误 创建名为“appConfig”的bean:自动连线的注入 依赖关系失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 自动连线字段: com.vivalio.springmvc.converter.RoleToUserProfileConverter com.vivalio.springmvc.configuration.AppConfig.roleToUserProfileConverter; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“roleToUserProfileConverter”的bean:注入 自动连线依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 autowire字段:com.vivalio.springmvc.service.UserProfileService com.vivalio.springmvc.converter.RoleToUserProfileConverter.userProfileService; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“userProfileService”的bean:自动连线的注入 依赖关系失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 autowire字段:com.vivalio.springmvc.dao.UserProfileDao com.vivalio.springmvc.service.UserProfileServiceImpl.dao;嵌套 例外情况为org.springframework.beans.factory.BeanCreationException: 创建名为“userProfileDao”的bean时出错:自动连线的注入 依赖关系失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 autowire字段:private org.hibernate.SessionFactory com.vivalio.springmvc.dao.AbstractDao.sessionFactory;嵌套异常 是org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义了名为“sessionFactory”的bean 资源 [com/vivalio/springmvc/configuration/HibernateConfiguration.class]: 调用init方法失败;嵌套异常是 java.lang.ClassCastException: 无法将org.hibernate.mapping.SingleTableSubclass强制转换为 org.hibernate.mapping.RootClass位于 org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor.PostProcessPropertyValue(AutoWiredNotationBeanPostProcessor.java:334)


这就是异常的根本原因:

org.hibernate.mapping.SingleTableSubclass cannot be cast to org.hibernate.mapping.RootClass
这意味着在子类和父类中都有
@Id

从两个子类中删除
@Id
字段,它们将从父类继承该字段

第二个问题是,
@JoinColumn
@Id
同名

@ManyToOne
@JoinColumn(name = "doc_id") // give some unique column name here
private Docteur doc;

p.S.与问题无关的小建议:


您的
控制器中有10个+
@Autowired
依赖项。这真的不是设计类的好方法。每次在一个类中观察到太多的
@Autowired
依赖项时,都会引发您对应用程序设计的思考-这个类承担了太多的责任。

这是异常的根本原因:

org.hibernate.mapping.SingleTableSubclass cannot be cast to org.hibernate.mapping.RootClass
这意味着在子类和父类中都有
@Id

从两个子类中删除
@Id
字段,它们将从父类继承该字段

第二个问题是,
@JoinColumn
@Id
同名

@ManyToOne
@JoinColumn(name = "doc_id") // give some unique column name here
private Docteur doc;

p.S.与问题无关的小建议:


您的
控制器中有10个+
@Autowired
依赖项。这真的不是设计类的好方法。每次在一个类中观察到太多的
@Autowired
依赖项时,都会引发您对应用程序设计的思考-这个类承担了太多的责任。

要理解这个问题,需要配置类和stacktrace。@Badabom,提供正在使用AppConfigBean的代码和bean定义代码well@J-Alex我已经添加了堆栈跟踪和配置class@AnilKumarAthuluri我添加了appConfig类和stacktrace以了解问题-需要配置类和stacktrace。@Badabom,提供正在使用AppConfigBean的代码和bean定义代码well@J-Alex我已经添加了堆栈跟踪和配置class@AnilKumarAthuluri我已经添加了appConfig类和StackTraceA。在从两个子类中删除Id字段后,我仍然存在以下错误:由以下原因引起:org.hibernate.MappingException:实体映射中的重复列:com.vivalio.springmvc.model.Patient column:id(应使用insert=“false”update=“false”进行映射)以下是堆栈跟踪:原因:org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的bean时出错,该bean在类路径资源中定义[com/vivalio/springmvc/configuration/HibernateConfiguration.class]:init方法调用失败;嵌套异常为org.hibernate.MappingException:实体映射中的重复列:com.vivalio.springmvc.model.Patient column:id(应使用insert=“false”update=“false”映射)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.i在尝试身份验证时,假设我的数据库中只有两个id不同的用户:由:org.hibernate.ErrorClassException:Object[id=1]引起不是指定的子类[com.vivalio.springmvc.model.User]:Discriminator:在org.hibernate.loader.loader.getInstanceClass(loader.java:1770)你肯定应该发布一个新问题,我