首页 > 解决方案 > 为类提供了错误类型的 id

问题描述

内部服务器错误","message":"org.hibernate.TypeMismatchException:为类 ca.timisencotech.projectmanagementapis.dto.UserDetails 提供了错误类型的 id。预期:类 ca.timisencotech.projectmanagementapis.dto.UserDetails$UserDetailsId,得到类 ca.timisencotech.projectmanagementapis.dto.UserLoginDetails$UserLoginDetailsId;嵌套异常是 java.lang.IllegalArgumentException:

我的服务实现类:

@Repository
public class UserLoginDetailsDAOImp implements UserLoginDetailsDAO {

@Autowired
UserLoginDetailsRepository userLoginDetailsRepository;

@Autowired
UserDetailsRepository userDetailsRepository;

PersistentException persistentException = new PersistentException();

@SuppressWarnings("unchecked")
@Override
public <T> Container<T> confirmdUserLoginDetails(UserLoginDetail userLoginDetail) {

    Container<T> genericObject=null;
    UserLoginDetails newUserLoginDetails = new UserLoginDetails();
    newUserLoginDetails.setPassword(userLoginDetail.getPassword());
    newUserLoginDetails.setUserEmail(userLoginDetail.getUserEmail());

    UserLoginDetails findUserLoginDetails = userLoginDetailsRepository.findByEmail(userLoginDetail.getUserEmail());

//  UserLoginDetails responseUserDetails = newUserLoginDetails;
            //userLoginDetailsRepository.findByEmail("userEmail@gmail.com");
 // System.out.println("-->"+responseUserDetails);

     try { 

            if(findUserLoginDetails!=null)
            {
                 UserLoginDetail domainUserLoginDetail = new UserLoginDetail();
                 domainUserLoginDetail.setLoginTime(findUserLoginDetails.getLoginTime());
                 domainUserLoginDetail.setPassword(findUserLoginDetails.getPassword());
                 domainUserLoginDetail.setUserEmail(findUserLoginDetails.getUserEmail());

                 Application.getLogger().info("addNewUser method in UserDetails DAO Implementation. At this point new user has successful saved to the database. Return userdetails from repo is"+domainUserLoginDetail);

                 genericObject = (Container<T>) new Container<UserLoginDetail>(domainUserLoginDetail,"Class Object");

            }
            else
            {
                 genericObject = (Container<T>) new  Container<ApiError> (new ApiError("Persistence Error", "Repository returned null"),"Null Object");

            }
     }
     catch (DataAccessException dataAccessException) {
         Application.getLogger().info("addNewUser method in UserDetails DAO Implementation. At this point there is an error that has prevented saving new user to the database");

         genericObject = (Container<T>) new  Container<ApiError> (persistentException.handleDataAccessException((DataAccessException)dataAccessException),"Error Object");


     }
     return genericObject;
}

}

实体类:

public class UserLoginDetails implements Serializable{
   private static final long serialVersionUID = 1L;

   @Id
   @Column(name = "email",unique = true, nullable = false,length=50)
   private String email;

  @Column(name = "p", nullable = false,length=20)
  private String password;

  @Column(name = "l", nullable = false,length=100)
  private Timestamp loginTime;

  @OneToOne(mappedBy = "u", cascade = CascadeType.ALL,fetch = FetchType.LAZY, optional = false)
  private UserDetails userDetails;

  public  UserLoginDetails(){
  }

  @Bean
  public String getUserEmail(){
    return email;
 }

 @Bean
 public void setUserEmail(String userEmail){
    this.email = userEmail;
 }  

 @Bean
 public UserDetails getUserDetails() {
    return userDetails;
}

@Bean
public void setUserDetails(UserDetails userDetails) {
    this.userDetails = userDetails;
}

@Bean
public String getPassword(){
    return password;
}

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

@Bean
public Timestamp getLoginTime(){
    return loginTime;
}

@Bean
public void setLoginTime(Timestamp loginTime){
    this.loginTime =loginTime;
}

@Override
public String toString()
{
    return "{el:"+e+", p:"+p+", l:"+l+"}";
}

public static class UserLoginDetailsId implements Serializable {

    private static final long serialVersionUID = -7321416499047242338L;

    private String email;

}
}

领域

public class UserLoginDetail implements Serializable{
    private static final long serialVersionUID = 1L;

    private String email;

    private String password;

    private Timestamp loginTime;

    public  UserLoginDetail(){
    }

   public String getUserEmail(){
      return email;
   }


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






public String getPassword()
{
    return password;
}



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




public Timestamp getLoginTime()
{
    return loginTime;
}



public void setLoginTime(Timestamp loginTime)
{
    this.loginTime =loginTime;
}




@Override
public String toString()
{
    return "{email:"+email+", password:"+password+", loginTime:"+loginTime+"}";
}
public static class UserDetailsId implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = -7321416499047242338L;

    private String email;


}
}

回购类:

public interface UserLoginDetailsRepository extends CrudRepository<UserLoginDetails, Long> {
    public UserLoginDetails findByEmail(String email);
    //public UserLoginDetails findByEmailAndPassword(String email,String password);
}

{"timestamp":"2019-07-29T18:34:31.856+0000","status":500,"error":"Internal Server Error","message":"org.hibernate.TypeMismatchException: 提供的 id类 ca.timisencotech.projectmanagementapis.dto.UserDetails 的类型错误。预期:类 ca.timisencotech.projectmanagementapis.dto.UserDetails$UserDetailsId,得到类 ca.timisencotech.projectmanagementapis.dto.UserLoginDetails$UserLoginDetailsId;嵌套异常是 java.lang。 IllegalArgumentException: org.hibernate.TypeMismatchException: 为类 ca.timisencotech.projectmanagementapis.dto.UserDetails 提供了错误类型的 id。预期:类 ca.timisencotech.projectmanagementapis.dto.UserDetails$UserDetailsId,得到类 ca.timisencotech.projectmanagementapis.dto .UserLoginDetails$UserLoginDetailsId","路径":"/projectmanagement/confirmLoginDetails"}

标签: hibernaterestspring-bootjpaspring-data-jpa

解决方案


推荐阅读