diff --git a/core/pom.xml b/core/pom.xml
index a61f6cc..a287692 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -5,7 +5,7 @@
com.cosium.spring.data
spring-data-jpa-entity-graph-parent
- 3.5.1-SNAPSHOT
+ 4.0.0-SNAPSHOT
Spring Data JPA EntityGraph
@@ -13,47 +13,25 @@
-
- javax.xml.bind
- jaxb-api
- 2.4.0-b180830.0359
+ org.springframework.data
+ spring-data-jpa
provided
- org.springframework.data
- spring-data-jpa
+ jakarta.persistence
+ jakarta.persistence-api
provided
+
-
javax.annotation
javax.annotation-api
1.3.2
provided
-
- com.querydsl
- querydsl-apt
- jakarta
- provided
-
-
-
- org.hibernate.orm
- hibernate-jpamodelgen
- provided
-
-
-
- ${project.groupId}
- spring-data-jpa-entity-graph-generator
- ${project.version}
- provided
-
-
com.querydsl
querydsl-jpa
@@ -118,6 +96,32 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.hibernate.orm
+ hibernate-processor
+ ${hibernate.version}
+
+
+ com.querydsl
+ querydsl-apt
+ ${querydsl}
+ jakarta
+
+
+ ${project.groupId}
+ spring-data-jpa-entity-graph-generator
+ ${project.version}
+
+
+ target/generated-test-sources
+ target/generated-sources
+
+
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java
index 45f4397..d9d229b 100644
--- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java
@@ -11,5 +11,6 @@
@NoRepositoryBean
public interface EntityGraphJpaRepository
extends JpaRepository,
- EntityGraphPagingAndSortingRepository,
+ EntityGraphListCrudRepository,
+ EntityGraphListPagingAndSortingRepository,
EntityGraphQueryByExampleExecutor {}
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphListCrudRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphListCrudRepository.java
new file mode 100644
index 0000000..2ef04bd
--- /dev/null
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphListCrudRepository.java
@@ -0,0 +1,24 @@
+package com.cosium.spring.data.jpa.entity.graph.repository;
+
+import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph;
+import java.util.List;
+import org.springframework.data.repository.ListCrudRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+/**
+ * @author Andreas Austing
+ */
+@NoRepositoryBean
+public interface EntityGraphListCrudRepository
+ extends ListCrudRepository, EntityGraphCrudRepository {
+
+ /**
+ * @see ListCrudRepository#findAllById(Iterable)
+ */
+ List findAllById(Iterable ids, EntityGraph entityGraph);
+
+ /**
+ * @see ListCrudRepository#findAll()
+ */
+ List findAll(EntityGraph entityGraph);
+}
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphListPagingAndSortingRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphListPagingAndSortingRepository.java
new file mode 100644
index 0000000..bb24fce
--- /dev/null
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphListPagingAndSortingRepository.java
@@ -0,0 +1,20 @@
+package com.cosium.spring.data.jpa.entity.graph.repository;
+
+import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph;
+import java.util.List;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.repository.ListPagingAndSortingRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+/**
+ * @author Andreas Austing
+ */
+@NoRepositoryBean
+public interface EntityGraphListPagingAndSortingRepository
+ extends ListPagingAndSortingRepository, EntityGraphPagingAndSortingRepository {
+
+ /**
+ * @see ListPagingAndSortingRepository#findAll(Sort)
+ */
+ List findAll(Sort sort, EntityGraph entityGraph);
+}
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java
index b6ada27..a55183d 100644
--- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java
@@ -14,7 +14,7 @@
*/
@NoRepositoryBean
public interface EntityGraphPagingAndSortingRepository
- extends PagingAndSortingRepository, EntityGraphCrudRepository {
+ extends PagingAndSortingRepository, EntityGraphRepository {
/**
* @see PagingAndSortingRepository#findAll(Pageable)
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/query/EntityGraphAwareJpaParameters.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/query/EntityGraphAwareJpaParameters.java
index 6632097..e3fdef4 100644
--- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/query/EntityGraphAwareJpaParameters.java
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/query/EntityGraphAwareJpaParameters.java
@@ -2,9 +2,9 @@
import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph;
import org.springframework.core.MethodParameter;
+import org.springframework.data.core.TypeInformation;
import org.springframework.data.jpa.repository.query.JpaParameters;
import org.springframework.data.repository.query.ParametersSource;
-import org.springframework.data.util.TypeInformation;
/**
* @author Réda Housni Alaoui
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphJpaRepositoryFactory.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphJpaRepositoryFactory.java
index 4c401d4..f17d016 100644
--- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphJpaRepositoryFactory.java
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphJpaRepositoryFactory.java
@@ -5,6 +5,7 @@
import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph;
import com.cosium.spring.data.jpa.entity.graph.repository.query.EntityGraphAwareJpaQueryMethodFactory;
import jakarta.persistence.EntityManager;
+import org.jspecify.annotations.Nullable;
import org.springframework.data.jpa.provider.PersistenceProvider;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
@@ -33,9 +34,18 @@ public EntityGraphJpaRepositoryFactory(EntityManager entityManager) {
PersistenceProvider.fromEntityManager(entityManager)));
}
+ @Override
+ public void setRepositoryBaseClass(@Nullable Class> repositoryBaseClass) {
+ // ignore
+ }
+
@Override
protected Class> getRepositoryBaseClass(RepositoryMetadata metadata) {
- if (isQueryDslExecutor(metadata.getRepositoryInterface())) {
+ return getRepositoryBaseClass(metadata.getRepositoryInterface());
+ }
+
+ protected Class> getRepositoryBaseClass(Class> repositoryInterface) {
+ if (isQueryDslExecutor(repositoryInterface)) {
return EntityGraphQuerydslRepository.class;
} else {
return EntityGraphSimpleJpaRepository.class;
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java
index f0b9dc8..1247373 100644
--- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java
@@ -90,12 +90,12 @@ public List findAllById(Iterable ids, EntityGraph entityGraph) {
}
@Override
- public Iterable findAll(Sort sort, EntityGraph entityGraph) {
+ public List findAll(Sort sort, EntityGraph entityGraph) {
return findAll(sort);
}
@Override
- public Iterable findAll(EntityGraph entityGraph) {
+ public List findAll(EntityGraph entityGraph) {
return findAll();
}
}
diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/RepositoryQueryEntityGraphInjector.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/RepositoryQueryEntityGraphInjector.java
index bb1b7e9..96b2f8d 100644
--- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/RepositoryQueryEntityGraphInjector.java
+++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/RepositoryQueryEntityGraphInjector.java
@@ -23,7 +23,8 @@ class RepositoryQueryEntityGraphInjector implements MethodInterceptor {
LoggerFactory.getLogger(RepositoryQueryEntityGraphInjector.class);
private static final List EXECUTE_QUERY_METHODS =
- Arrays.asList("getResultList", "getSingleResult", "getResultStream", "scroll");
+ Arrays.asList(
+ "getResultList", "getSingleResult", "getSingleResultOrNull", "getResultStream", "scroll");
private static final String UNWRAP_METHOD = "unwrap";
private final EntityGraphQueryHintCandidate entityGraphCandidate;
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/DefaultEntityGraphTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/DefaultEntityGraphTest.java
index e3314d7..8626a4e 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/DefaultEntityGraphTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/DefaultEntityGraphTest.java
@@ -17,10 +17,10 @@
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.util.Optional;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -29,7 +29,7 @@
@DatabaseSetup(BaseTest.DATASET)
class DefaultEntityGraphTest extends BaseTest {
- @Inject private MyEntityRepository repository;
+ @Autowired private MyEntityRepository repository;
@Transactional
@Test
@@ -86,7 +86,7 @@ public void setMaker(Maker maker) {
}
}
- interface MyEntityRepository extends EntityGraphCrudRepository {
+ interface MyEntityRepository extends EntityGraphListCrudRepository {
@Override
default Optional defaultEntityGraph() {
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCustomJpaRepositoryTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCustomJpaRepositoryTest.java
index cf7d151..e6b6558 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCustomJpaRepositoryTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCustomJpaRepositoryTest.java
@@ -12,10 +12,10 @@
import jakarta.persistence.PersistenceContext;
import java.util.List;
import java.util.Optional;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.Repository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -28,7 +28,7 @@
@DatabaseSetup(BaseTest.DATASET)
class EntityGraphCustomJpaRepositoryTest extends BaseTest {
- @Inject private EntityGraphCustomJpaRepositoryTestProductRepository productRepository;
+ @Autowired private EntityGraphCustomJpaRepositoryTestProductRepository productRepository;
@Test
@Transactional
@@ -68,8 +68,10 @@ public interface ProductRepositoryCustom {
public static class EntityGraphCustomJpaRepositoryTestProductRepositoryImpl
implements ProductRepositoryCustom {
- @Inject private BrandRepository brandRepository;
- @Inject private EntityGraphCustomJpaRepositoryTestProductRepository productRepository;
+ @Autowired private BrandRepository brandRepository;
+
+ @Autowired private EntityGraphCustomJpaRepositoryTestProductRepository productRepository;
+
@PersistenceContext private EntityManager entityManager;
@Override
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java
index 5c2c200..5dbc1c2 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java
@@ -21,10 +21,10 @@
import jakarta.persistence.criteria.Root;
import java.util.List;
import java.util.Optional;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@@ -42,8 +42,9 @@ class EntityGraphJpaRepositoryTest extends BaseTest {
@PersistenceContext private EntityManager entityManager;
- @Inject private ProductRepository productRepository;
- @Inject private BrandRepository brandRepository;
+ @Autowired private ProductRepository productRepository;
+
+ @Autowired private BrandRepository brandRepository;
@Transactional
@Test
@@ -355,7 +356,7 @@ public interface ProductRepository
@org.springframework.data.jpa.repository.EntityGraph(attributePaths = "brand")
@Override
- Iterable findAll(EntityGraph entityGraph);
+ List findAll(EntityGraph entityGraph);
@org.springframework.data.jpa.repository.EntityGraph(attributePaths = "brand")
List findByName(String name, EntityGraph entityGraph);
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaSpecificationExecutorTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaSpecificationExecutorTest.java
index 07feb6e..421b5b4 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaSpecificationExecutorTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaSpecificationExecutorTest.java
@@ -17,10 +17,10 @@
import jakarta.persistence.criteria.Root;
import java.util.List;
import java.util.Optional;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.transaction.annotation.Transactional;
@@ -32,7 +32,7 @@
@DatabaseSetup(BaseTest.DATASET)
class EntityGraphJpaSpecificationExecutorTest extends BaseTest {
- @Inject private ProductRepository productRepository;
+ @Autowired private ProductRepository productRepository;
@Transactional
@Test
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQuerydslPredicateExecutorTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQuerydslPredicateExecutorTest.java
index 0e838e1..de049c7 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQuerydslPredicateExecutorTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQuerydslPredicateExecutorTest.java
@@ -8,10 +8,10 @@
import com.cosium.spring.data.jpa.entity.graph.sample.QProduct;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import java.util.Optional;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.repository.Repository;
@@ -25,7 +25,7 @@
@DatabaseSetup(BaseTest.DATASET)
class EntityGraphQuerydslPredicateExecutorTest extends BaseTest {
- @Inject private ProductRepository productRepository;
+ @Autowired private ProductRepository productRepository;
@Transactional
@Test
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/GeneratedEntityGraphTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/GeneratedEntityGraphTest.java
index a3673d8..7c534da 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/GeneratedEntityGraphTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/GeneratedEntityGraphTest.java
@@ -6,10 +6,10 @@
import com.cosium.spring.data.jpa.entity.graph.sample.Product;
import com.cosium.spring.data.jpa.entity.graph.sample.ProductEntityGraph;
import com.github.springtestdbunit.annotation.DatabaseSetup;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -18,7 +18,7 @@
@DatabaseSetup(BaseTest.DATASET)
class GeneratedEntityGraphTest extends BaseTest {
- @Inject private ProductRepository productRepository;
+ @Autowired private ProductRepository productRepository;
@Transactional
@Test
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/RepositoryTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/RepositoryTest.java
index 55737d6..b89ec56 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/RepositoryTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/RepositoryTest.java
@@ -10,10 +10,10 @@
import com.github.springtestdbunit.annotation.DatabaseSetup;
import java.util.List;
import java.util.stream.Stream;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.Repository;
import org.springframework.transaction.annotation.Transactional;
@@ -25,7 +25,7 @@
@DatabaseSetup(BaseTest.DATASET)
class RepositoryTest extends BaseTest {
- @Inject private MakerRepository makerRepository;
+ @Autowired private MakerRepository makerRepository;
@Transactional
@Test
diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/StreamingRepositoryTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/StreamingRepositoryTest.java
index 8ca5157..3deb440 100644
--- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/StreamingRepositoryTest.java
+++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/StreamingRepositoryTest.java
@@ -10,10 +10,10 @@
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -23,7 +23,7 @@
@DatabaseSetup(BaseTest.DATASET)
class StreamingRepositoryTest extends BaseTest {
- @Inject private MyService myService;
+ @Autowired private MyService myService;
@Test
void test1() {
diff --git a/generator/pom.xml b/generator/pom.xml
index 9f45e96..1f4ff3d 100644
--- a/generator/pom.xml
+++ b/generator/pom.xml
@@ -5,7 +5,7 @@
com.cosium.spring.data
spring-data-jpa-entity-graph-parent
- 3.5.1-SNAPSHOT
+ 4.0.0-SNAPSHOT
Spring Data JPA EntityGraph Generator
@@ -44,6 +44,20 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ com.google.auto.service
+ auto-service
+
+
+ target/generated-test-sources
+ target/generated-sources
+
+
diff --git a/pom.xml b/pom.xml
index 1939d54..438ca53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,28 +8,28 @@
com.cosium.spring.data
spring-data-jpa-entity-graph-parent
- 3.5.1-SNAPSHOT
+ 4.0.0-SNAPSHOT
pom
- core
generator
+ core
17
- 3.5.0
+ 4.0.0
5.1.0
3.0.0
1.3.0
- 6.2.12
- 6.3.1.Final
+ 7.0.0
+ 7.1.7.Final
2.7.4
3.27.6
1.5.20
- 6.0.0
+ 6.0.1
1.1.1
5.4
@@ -39,7 +39,7 @@
jakarta.persistence
jakarta.persistence-api
- 3.1.0
+ 3.2.0
org.springframework.data
@@ -56,7 +56,7 @@
org.hibernate.orm
- hibernate-jpamodelgen
+ ibernate-processor
${hibernate.version}