Java 为什么我不能从基类存储库获取子类?

Java 为什么我不能从基类存储库获取子类?,java,spring,jpa,inheritance,spring-data,Java,Spring,Jpa,Inheritance,Spring Data,我的数据模型中有一个继承。我有: public class User(){ private String login; private String password; // accessors } 我还有三个扩展用户类的类: public class Candidate() extends User{ // specific attributes and accessors } public class Recruiter() extends User{ // speci

我的数据模型中有一个继承。我有:

public class User(){

private String login;

private String password;

// accessors

}
我还有三个扩展用户类的类:

public class Candidate() extends User{

 // specific attributes and accessors

}

public class Recruiter() extends User{

 // specific attributes and accessors

}

public class Administrator() extends User{

 // specific attributes and accessors

}
我使用SpringDataJPA从数据库中获取数据。以下是UserRepository的代码:

public interface UserRepository extends JpaRepository<User, Long> {

    Optional<User> findOneByActivationKey(String activationKey);

    List<User> findAllByActivatedIsFalseAndCreatedDateBefore(DateTime dateTime);

    Optional<User> findOneByEmail(String email);

    Optional<User> findOneByLogin(String login);

    void delete(User t);

}
public interface UserRepository扩展了JpaRepository{
可选FindOneByaActivationKey(字符串激活键);
列出FindAllByActivatedIsFalse和CreatedDataBefore(日期时间日期时间);
可选findOneByEmail(字符串电子邮件);
可选findOneByLogin(字符串登录);
作废删除(用户t);
}
当我从我的一个控制器中取出数据并检查用户取出的实例是否为候选实例时,问题出现了:

 String currentEmail = SecurityUtils.getCurrentEmail();
        Optional<User> currentUser = userRepository.findOneByEmail(currentEmail);
        if(currentUser.isPresent() && currentUser.get() instanceof Candidate){ 

            ((Candidate)currentUser.get() ).addLink(link);
        }
String currentEmail=SecurityUtils.getCurrentEmail();
可选currentUser=userRepository.findOneByEmail(currentEmail);
如果(currentUser.isPresent()&¤tUser.get()候选实例){
((候选)currentUser.get()).addLink(link);
}
在这段代码中,currentUser.get()总是返回User,而不是候选人、招聘人员或管理员。 我不想发送另一个数据库请求来使用candidateRepository或recruiterRepository获取信息。 我错在哪里?
谢谢

您的存储库是针对用户类型的。这就是为什么您会得到用户的实例。