BAEL-6523: Difference Between findBy and findOneBy in Spring Data JPA (#14136)
This commit is contained in:
parent
33b4f08269
commit
ccaaddd70a
@ -0,0 +1,38 @@
|
||||
package com.baeldung.spring.data.jpa.listrepositories.entity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class Person {
|
||||
|
||||
@Id
|
||||
private int id;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.baeldung.spring.data.jpa.listrepositories.repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baeldung.spring.data.jpa.listrepositories.entity.Person;
|
||||
|
||||
@Repository
|
||||
public interface PersonRepository extends JpaRepository<Person, Integer> {
|
||||
Person findByFirstName(String firstName);
|
||||
|
||||
List<Person> findByLastName(String lastName);
|
||||
|
||||
Person findOneByFirstName(String firstName);
|
||||
|
||||
List<Person> findOneByLastName(String lastName);
|
||||
}
|
@ -1,2 +1,5 @@
|
||||
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||
spring.jpa.hibernate.ddl-auto=none
|
||||
|
||||
logging.level.org.hibernate.SQL=DEBUG
|
||||
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
|
||||
|
@ -0,0 +1,4 @@
|
||||
INSERT INTO person (id, first_name, last_name) VALUES(1, 'Azhrioun', 'Abderrahim');
|
||||
INSERT INTO person (id, first_name, last_name) VALUES(2, 'Brian', 'Wheeler');
|
||||
INSERT INTO person (id, first_name, last_name) VALUES(3, 'Stella', 'Anderson');
|
||||
INSERT INTO person (id, first_name, last_name) VALUES(4, 'Stella', 'Wheeler');
|
@ -0,0 +1,6 @@
|
||||
DROP TABLE IF EXISTS person;
|
||||
CREATE TABLE person(
|
||||
id INT PRIMARY KEY,
|
||||
first_name VARCHAR(200),
|
||||
last_name VARCHAR(200)
|
||||
)
|
@ -0,0 +1,66 @@
|
||||
package com.baeldung.spring.data.jpa.listrepositories.repository;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||
import org.springframework.dao.IncorrectResultSizeDataAccessException;
|
||||
|
||||
import com.baeldung.spring.data.jpa.listrepositories.entity.Person;
|
||||
|
||||
@DataJpaTest
|
||||
class PersonRepositoryIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private PersonRepository personRepository;
|
||||
|
||||
@Test
|
||||
void givenFirstName_whenCallingFindByFirstName_ThenReturnOnePerson() {
|
||||
Person person = personRepository.findByFirstName("Azhrioun");
|
||||
|
||||
assertNotNull(person);
|
||||
assertEquals("Abderrahim", person.getLastName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLastName_whenCallingFindByLastName_ThenReturnList() {
|
||||
List<Person> person = personRepository.findByLastName("Wheeler");
|
||||
|
||||
assertEquals(2, person.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenFirstName_whenCallingFindOneByFirstName_ThenReturnOnePerson() {
|
||||
Person person = personRepository.findOneByFirstName("Azhrioun");
|
||||
|
||||
assertNotNull(person);
|
||||
assertEquals("Abderrahim", person.getLastName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLastName_whenCallingFindOneByLastName_ThenReturnList() {
|
||||
List<Person> persons = personRepository.findOneByLastName("Wheeler");
|
||||
|
||||
assertEquals(2, persons.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenFirstName_whenCallingFindByFirstName_ThenThrowException() {
|
||||
IncorrectResultSizeDataAccessException exception = assertThrows(IncorrectResultSizeDataAccessException.class, () -> personRepository.findByFirstName("Stella"));
|
||||
|
||||
assertEquals("query did not return a unique result: 2", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenFirstName_whenCallingFindOneByFirstName_ThenThrowException() {
|
||||
IncorrectResultSizeDataAccessException exception = assertThrows(IncorrectResultSizeDataAccessException.class, () -> personRepository.findOneByFirstName("Stella"));
|
||||
|
||||
assertEquals("query did not return a unique result: 2", exception.getMessage());
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user