Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface UserRepository extends JpaRepository<User, Long>, IUserRepository<User>{
- User findByUsername(String username);
- }
- public interface IUserRepository<T> {
- public List<T> findAllValidEtSiteAndStructure();
- }
- public class UserRepositoryImpl<T> implements IUserRepository<T> {
- @PersistenceContext
- private EntityManager em;
- private Class< T > type;
- @Override
- public List<T> findAllValidEtSiteAndStructure() {
- final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- if (authentication instanceof UserAuthentication) {
- final User currentUser = ((UserAuthentication) authentication).getDetails();
- return (List<T>) em.createQuery("FROM " + type.getName()+ " WHERE site=:site AND structure=:structure AND valid=:valid")
- .setParameter("site", currentUser.getInstallation().getSite())
- .setParameter("structure", currentUser.getInstallation().getStructure())
- .setParameter("valid", true)
- .getResultList();
- }
- return null;
- }
- }
- public interface UserRepository extends JpaRepository<User, Long> {
- User findByUsername(String username);
- List<User> findByStructureAndSiteAndValid(Structure structure, Site site, boolean valid);
- }
- public abstract Class getType();
- public class StudentRepository extends UserRepositoryImpl<Student> {
- public Class getType() {
- return Student.class;
- }
- }
- ResolvableType resolvableType = ResolvableType.forClass(UserRepository.class).as(JpaRepository.class);
- System.out.println(resolvableType.getGeneric(0));//User
- System.out.println(resolvableType.getGeneric(0));//Long
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement