Advertisement
Guest User

Untitled

a guest
Jul 26th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. public interface UserRepository extends JpaRepository<User, Long>, IUserRepository<User>{
  2. User findByUsername(String username);
  3. }
  4.  
  5. public interface IUserRepository<T> {
  6. public List<T> findAllValidEtSiteAndStructure();
  7. }
  8.  
  9. public class UserRepositoryImpl<T> implements IUserRepository<T> {
  10.  
  11. @PersistenceContext
  12. private EntityManager em;
  13.  
  14. private Class< T > type;
  15.  
  16. @Override
  17. public List<T> findAllValidEtSiteAndStructure() {
  18. final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  19. if (authentication instanceof UserAuthentication) {
  20. final User currentUser = ((UserAuthentication) authentication).getDetails();
  21. return (List<T>) em.createQuery("FROM " + type.getName()+ " WHERE site=:site AND structure=:structure AND valid=:valid")
  22. .setParameter("site", currentUser.getInstallation().getSite())
  23. .setParameter("structure", currentUser.getInstallation().getStructure())
  24. .setParameter("valid", true)
  25. .getResultList();
  26. }
  27. return null;
  28. }
  29. }
  30.  
  31. public interface UserRepository extends JpaRepository<User, Long> {
  32.  
  33. User findByUsername(String username);
  34.  
  35. List<User> findByStructureAndSiteAndValid(Structure structure, Site site, boolean valid);
  36. }
  37.  
  38. public abstract Class getType();
  39.  
  40. public class StudentRepository extends UserRepositoryImpl<Student> {
  41. public Class getType() {
  42. return Student.class;
  43. }
  44. }
  45.  
  46. ResolvableType resolvableType = ResolvableType.forClass(UserRepository.class).as(JpaRepository.class);
  47. System.out.println(resolvableType.getGeneric(0));//User
  48. System.out.println(resolvableType.getGeneric(0));//Long
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement