Skip to content

Commit 74eec35

Browse files
committed
Test for many to many join issue
1 parent 2dc5153 commit 74eec35

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

data-tck/src/main/groovy/io/micronaut/data/tck/tests/AbstractRepositorySpec.groovy

+10
Original file line numberDiff line numberDiff line change
@@ -2539,6 +2539,12 @@ abstract class AbstractRepositorySpec extends Specification {
25392539
book2.getStudents().add(student)
25402540
bookRepository.save(book1)
25412541
bookRepository.save(book2)
2542+
def otherStudent = new Student("Ioana")
2543+
studentRepository.save(otherStudent)
2544+
when:
2545+
def students = studentRepository.queryByName(otherStudent.name, Pageable.from(0, 2))
2546+
then:
2547+
students.size() == 1
25422548
when:
25432549
def loadedStudent = studentRepository.findByName(student.name).get()
25442550
def loadedBook1 = bookRepository.findById(book1.id).get()
@@ -2554,6 +2560,10 @@ abstract class AbstractRepositorySpec extends Specification {
25542560
loadedBook2
25552561
loadedBook2.title == book2.title
25562562
loadedBook2.id == book2.id
2563+
when:
2564+
students = studentRepository.queryByName(student.name, Pageable.from(0, 2))
2565+
then:
2566+
students.size() == 1
25572567
cleanup:
25582568
studentRepository.delete(student)
25592569
bookRepository.delete(book1)

data-tck/src/main/java/io/micronaut/data/tck/repositories/StudentRepository.java

+4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.micronaut.data.annotation.Id;
2020
import io.micronaut.data.annotation.Join;
2121
import io.micronaut.data.annotation.Version;
22+
import io.micronaut.data.model.Pageable;
2223
import io.micronaut.data.repository.CrudRepository;
2324
import io.micronaut.data.repository.jpa.JpaSpecificationExecutor;
2425
import io.micronaut.data.repository.jpa.criteria.QuerySpecification;
@@ -43,6 +44,9 @@ public interface StudentRepository extends CrudRepository<Student, Long>, JpaSpe
4344
@Join(value = "books", type = Join.Type.FETCH)
4445
Optional<Student> findByName(String name);
4546

47+
@Join(value = "books", type = Join.Type.LEFT)
48+
List<Student> queryByName(String name, Pageable pageable);
49+
4650
static QuerySpecification<Student> byBookTitles(List<String> bookTitles) {
4751
return (root, query, criteriaBuilder) -> {
4852
boolean isCountQuery = query.getResultType().equals(Long.class);

0 commit comments

Comments
 (0)