为什么我无法从基类存储库中获取子类?

时间:2015-05-04 16:59:15

标签: java spring jpa inheritance spring-data

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

public class User(){

private String login;

private String password;

// accessors

}

我还有三个扩展User类的类:

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

}

我使用Spring数据JPA从数据库中获取数据。这是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);

}

当我的一个控制器出现问题时,我从数据库中获取数据并检查用户获取的实例是否为候选者:

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

            ((Candidate)currentUser.get() ).addLink(link);
        }

在此代码中,currentUser.get()始终返回User,而不是Candidate,Recruiter或Administrator。 我不想使用candidateRepository或recruiterRepository发送另一个数据库请求来获取信息。 我哪里错了? 感谢

0 个答案:

没有答案