BAEL-2474 (#5997)
* BAEL-2474 * rename UserRepositoryImpl.java into UserRepositoryCustomImpl.java
This commit is contained in:
parent
802e2b0398
commit
5faa406cb0
|
@ -1,6 +1,7 @@
|
||||||
package com.baeldung.dao.repositories.user;
|
package com.baeldung.dao.repositories.user;
|
||||||
|
|
||||||
import com.baeldung.domain.user.User;
|
import com.baeldung.domain.user.User;
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
|
@ -13,7 +14,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public interface UserRepository extends JpaRepository<User, Integer> {
|
public interface UserRepository extends JpaRepository<User, Integer> , UserRepositoryCustom{
|
||||||
|
|
||||||
Stream<User> findAllByName(String name);
|
Stream<User> findAllByName(String name);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.baeldung.dao.repositories.user;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.baeldung.domain.user.User;
|
||||||
|
|
||||||
|
public interface UserRepositoryCustom {
|
||||||
|
List<User> findUserByEmails(Set<String> emails);
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.baeldung.dao.repositories.user;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.PersistenceContext;
|
||||||
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import javax.persistence.criteria.Path;
|
||||||
|
import javax.persistence.criteria.Predicate;
|
||||||
|
import javax.persistence.criteria.Root;
|
||||||
|
|
||||||
|
import com.baeldung.domain.user.User;
|
||||||
|
|
||||||
|
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
|
||||||
|
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager entityManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<User> findUserByEmails(Set<String> emails) {
|
||||||
|
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
||||||
|
CriteriaQuery<User> query = cb.createQuery(User.class);
|
||||||
|
Root<User> user = query.from(User.class);
|
||||||
|
|
||||||
|
Path<String> emailPath = user.get("email");
|
||||||
|
|
||||||
|
List<Predicate> predicates = new ArrayList<>();
|
||||||
|
for (String email : emails) {
|
||||||
|
|
||||||
|
predicates.add(cb.like(emailPath, email));
|
||||||
|
|
||||||
|
}
|
||||||
|
query.select(user)
|
||||||
|
.where(cb.or(predicates.toArray(new Predicate[predicates.size()])));
|
||||||
|
|
||||||
|
return entityManager.createQuery(query)
|
||||||
|
.getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -18,7 +18,9 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
@ -274,9 +276,8 @@ public class UserRepositoryIntegrationTest {
|
||||||
|
|
||||||
List<User> usersSortByName = userRepository.findAll(new Sort(Sort.Direction.ASC, "name"));
|
List<User> usersSortByName = userRepository.findAll(new Sort(Sort.Direction.ASC, "name"));
|
||||||
|
|
||||||
assertThat(usersSortByName
|
assertThat(usersSortByName.get(0)
|
||||||
.get(0)
|
.getName()).isEqualTo(USER_NAME_ADAM);
|
||||||
.getName()).isEqualTo(USER_NAME_ADAM);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = PropertyReferenceException.class)
|
@Test(expected = PropertyReferenceException.class)
|
||||||
|
@ -289,9 +290,8 @@ public class UserRepositoryIntegrationTest {
|
||||||
|
|
||||||
List<User> usersSortByNameLength = userRepository.findAll(new Sort("LENGTH(name)"));
|
List<User> usersSortByNameLength = userRepository.findAll(new Sort("LENGTH(name)"));
|
||||||
|
|
||||||
assertThat(usersSortByNameLength
|
assertThat(usersSortByNameLength.get(0)
|
||||||
.get(0)
|
.getName()).isEqualTo(USER_NAME_ADAM);
|
||||||
.getName()).isEqualTo(USER_NAME_ADAM);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -304,9 +304,8 @@ public class UserRepositoryIntegrationTest {
|
||||||
|
|
||||||
List<User> usersSortByNameLength = userRepository.findAllUsers(JpaSort.unsafe("LENGTH(name)"));
|
List<User> usersSortByNameLength = userRepository.findAllUsers(JpaSort.unsafe("LENGTH(name)"));
|
||||||
|
|
||||||
assertThat(usersSortByNameLength
|
assertThat(usersSortByNameLength.get(0)
|
||||||
.get(0)
|
.getName()).isEqualTo(USER_NAME_ADAM);
|
||||||
.getName()).isEqualTo(USER_NAME_ADAM);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -320,10 +319,9 @@ public class UserRepositoryIntegrationTest {
|
||||||
|
|
||||||
Page<User> usersPage = userRepository.findAllUsersWithPagination(new PageRequest(1, 3));
|
Page<User> usersPage = userRepository.findAllUsersWithPagination(new PageRequest(1, 3));
|
||||||
|
|
||||||
assertThat(usersPage
|
assertThat(usersPage.getContent()
|
||||||
.getContent()
|
.get(0)
|
||||||
.get(0)
|
.getName()).isEqualTo("SAMPLE1");
|
||||||
.getName()).isEqualTo("SAMPLE1");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -337,10 +335,9 @@ public class UserRepositoryIntegrationTest {
|
||||||
|
|
||||||
Page<User> usersSortByNameLength = userRepository.findAllUsersWithPaginationNative(new PageRequest(1, 3));
|
Page<User> usersSortByNameLength = userRepository.findAllUsersWithPaginationNative(new PageRequest(1, 3));
|
||||||
|
|
||||||
assertThat(usersSortByNameLength
|
assertThat(usersSortByNameLength.getContent()
|
||||||
.getContent()
|
.get(0)
|
||||||
.get(0)
|
.getName()).isEqualTo("SAMPLE1");
|
||||||
.getName()).isEqualTo("SAMPLE1");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -370,6 +367,30 @@ public class UserRepositoryIntegrationTest {
|
||||||
assertThat(updatedUsersSize).isEqualTo(2);
|
assertThat(updatedUsersSize).isEqualTo(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenUsersInDBWhenFindByEmailsWithDynamicQueryThenReturnCollection() {
|
||||||
|
|
||||||
|
User user1 = new User();
|
||||||
|
user1.setEmail(USER_EMAIL);
|
||||||
|
userRepository.save(user1);
|
||||||
|
|
||||||
|
User user2 = new User();
|
||||||
|
user2.setEmail(USER_EMAIL2);
|
||||||
|
userRepository.save(user2);
|
||||||
|
|
||||||
|
User user3 = new User();
|
||||||
|
user3.setEmail(USER_EMAIL3);
|
||||||
|
userRepository.save(user3);
|
||||||
|
|
||||||
|
Set<String> emails = new HashSet<>();
|
||||||
|
emails.add(USER_EMAIL2);
|
||||||
|
emails.add(USER_EMAIL3);
|
||||||
|
|
||||||
|
Collection<User> usersWithEmails = userRepository.findUserByEmails(emails);
|
||||||
|
|
||||||
|
assertThat(usersWithEmails.size()).isEqualTo(2);
|
||||||
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
userRepository.deleteAll();
|
userRepository.deleteAll();
|
||||||
|
|
Loading…
Reference in New Issue