From 6d9077ab53bcad44fb94169f32ed1e752b7f7440 Mon Sep 17 00:00:00 2001 From: "ICKostiantyn.Ivanov" Date: Mon, 25 Mar 2024 21:38:27 +0100 Subject: [PATCH 1/5] BAEL-7297 - Continue with Transaction After Exception in JPA --- persistence-modules/pom.xml | 1 + persistence-modules/spring-jpa-3/.gitignore | 13 ++ persistence-modules/spring-jpa-3/README.md | 4 + persistence-modules/spring-jpa-3/pom.xml | 43 +++++ .../InvoiceRepository.java | 128 ++++++++++++++ .../InvoiceService.java | 27 +++ .../NotificationSendingException.java | 8 + .../model/InvoiceEntity.java | 62 +++++++ ...fterExceptionIntegrationConfiguration.java | 61 +++++++ ...nsactionAfterExceptionIntegrationTest.java | 165 ++++++++++++++++++ .../test.properties | 7 + .../src/test/resources/logback.xml | 12 ++ 12 files changed, 531 insertions(+) create mode 100644 persistence-modules/spring-jpa-3/.gitignore create mode 100644 persistence-modules/spring-jpa-3/README.md create mode 100644 persistence-modules/spring-jpa-3/pom.xml create mode 100644 persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceRepository.java create mode 100644 persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceService.java create mode 100644 persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/NotificationSendingException.java create mode 100644 persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/model/InvoiceEntity.java create mode 100644 persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationConfiguration.java create mode 100644 persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationTest.java create mode 100644 persistence-modules/spring-jpa-3/src/test/resources/continuetransactionafterexception/test.properties create mode 100644 persistence-modules/spring-jpa-3/src/test/resources/logback.xml diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 6d60340128..2048f2e65a 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -107,6 +107,7 @@ spring-hibernate-6 spring-jpa spring-jpa-2 + spring-jpa-3 spring-jdbc spring-jdbc-2 diff --git a/persistence-modules/spring-jpa-3/.gitignore b/persistence-modules/spring-jpa-3/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/spring-jpa-3/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/spring-jpa-3/README.md b/persistence-modules/spring-jpa-3/README.md new file mode 100644 index 0000000000..9db4527148 --- /dev/null +++ b/persistence-modules/spring-jpa-3/README.md @@ -0,0 +1,4 @@ +## Spring JPA (3) + +### Relevant Articles: +- More articles: [[<-- prev]](/spring-jpa-2) diff --git a/persistence-modules/spring-jpa-3/pom.xml b/persistence-modules/spring-jpa-3/pom.xml new file mode 100644 index 0000000000..b8bbe511c0 --- /dev/null +++ b/persistence-modules/spring-jpa-3/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + spring-jpa-3 + 0.1-SNAPSHOT + spring-jpa-3 + war + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + ${spring-boot.version} + + + com.h2database + h2 + ${h2.version} + + + + + org.springframework.boot + spring-boot-starter-test + ${spring-boot.version} + + + + + + 3.2.4 + + + \ No newline at end of file diff --git a/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceRepository.java b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceRepository.java new file mode 100644 index 0000000000..b19ea156ec --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceRepository.java @@ -0,0 +1,128 @@ +package com.baeldung.continuetransactionafterexception; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import com.baeldung.continuetransactionafterexception.model.InvoiceEntity; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.EntityTransaction; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; +import jakarta.persistence.TypedQuery; + +@Repository +public class InvoiceRepository { + private final Logger logger = LoggerFactory.getLogger(InvoiceRepository.class); + @PersistenceContext + private EntityManager entityManager; + + @Autowired + private EntityManagerFactory entityManagerFactory; + + @Transactional + public void saveBatch(List invoiceEntities) { + invoiceEntities.forEach(i -> entityManager.persist(i)); + try { + entityManager.flush(); + } catch (Exception e) { + logger.error("Duplicates detected, save individually", e); + + invoiceEntities.forEach(i -> { + try { + save(i); + } catch (Exception ex) { + logger.error("Problem saving individual entity {}", i.getSerialNumber(), ex); + } + }); + } + } + + @Transactional + public void save(InvoiceEntity invoiceEntity) { + if (invoiceEntity.getId() == null) { + entityManager.persist(invoiceEntity); + } else { + entityManager.merge(invoiceEntity); + } + + entityManager.flush(); + logger.info("Entity is saved: {}", invoiceEntity.getSerialNumber()); + } + + public void saveBatchUsingManualTransaction(List testEntities) { + EntityTransaction transaction = null; + try (EntityManager em = em()) { + transaction = em.getTransaction(); + transaction.begin(); + testEntities.forEach(em::persist); + try { + em.flush(); + } catch (Exception e) { + logger.error("Duplicates detected, save individually", e); + transaction.rollback(); + testEntities.forEach(t -> { + EntityTransaction newTransaction = em.getTransaction(); + try { + newTransaction.begin(); + saveUsingManualTransaction(t, em); + } catch (Exception ex) { + logger.error("Problem saving individual entity <{}>", t.getSerialNumber(), ex); + newTransaction.rollback(); + } finally { + commitTransactionIfNeeded(newTransaction); + } + }); + + } + } finally { + commitTransactionIfNeeded(transaction); + } + } + + private void commitTransactionIfNeeded(EntityTransaction newTransaction) { + if (newTransaction != null && newTransaction.isActive()) { + if (!newTransaction.getRollbackOnly()) { + newTransaction.commit(); + } + } + } + + private void saveUsingManualTransaction(InvoiceEntity invoiceEntity, EntityManager em) { + if (invoiceEntity.getId() == null) { + em.persist(invoiceEntity); + } else { + em.merge(invoiceEntity); + } + + em.flush(); + logger.info("Entity is saved: {}", invoiceEntity.getSerialNumber()); + } + + private EntityManager em() { + return entityManagerFactory.createEntityManager(); + } + + @Transactional + public void saveBatchOnly(List testEntities) { + testEntities.forEach(entityManager::persist); + entityManager.flush(); + } + + public List findAll() { + TypedQuery query = entityManager.createQuery("SELECT i From InvoiceEntity i", InvoiceEntity.class); + return query.getResultList(); + } + + @Transactional + public void deleteAll() { + Query query = entityManager.createQuery("DELETE FROM InvoiceEntity"); + query.executeUpdate(); + } +} diff --git a/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceService.java b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceService.java new file mode 100644 index 0000000000..e1db310d03 --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/InvoiceService.java @@ -0,0 +1,27 @@ +package com.baeldung.continuetransactionafterexception; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baeldung.continuetransactionafterexception.model.InvoiceEntity; + +@Service +public class InvoiceService { + @Autowired + private InvoiceRepository repository; + @Transactional + public void saveInvoice(InvoiceEntity invoice) { + repository.save(invoice); + sendNotification(); + } + @Transactional(noRollbackFor = NotificationSendingException.class) + public void saveInvoiceWithoutRollback(InvoiceEntity entity) { + repository.save(entity); + sendNotification(); + } + + private void sendNotification() { + throw new NotificationSendingException("Notification sending is failed"); + } +} diff --git a/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/NotificationSendingException.java b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/NotificationSendingException.java new file mode 100644 index 0000000000..8c2fd3cd5b --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/NotificationSendingException.java @@ -0,0 +1,8 @@ +package com.baeldung.continuetransactionafterexception; + +public class NotificationSendingException extends RuntimeException { + + public NotificationSendingException(String text) { + super(text); + } +} diff --git a/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/model/InvoiceEntity.java b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/model/InvoiceEntity.java new file mode 100644 index 0000000000..bcae12b2ab --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/main/java/com/baeldung/continuetransactionafterexception/model/InvoiceEntity.java @@ -0,0 +1,62 @@ +package com.baeldung.continuetransactionafterexception.model; + +import java.util.Objects; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.persistence.UniqueConstraint; + +@Entity +@Table(uniqueConstraints = {@UniqueConstraint(columnNames = "serialNumber")}) +public class InvoiceEntity { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Integer id; + private String serialNumber; + private String description; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(String serialNumber) { + this.serialNumber = serialNumber; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + InvoiceEntity that = (InvoiceEntity) o; + return Objects.equals(serialNumber, that.serialNumber); + } + + @Override + public int hashCode() { + return Objects.hash(serialNumber); + } +} diff --git a/persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationConfiguration.java b/persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationConfiguration.java new file mode 100644 index 0000000000..3a5bd1cde2 --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationConfiguration.java @@ -0,0 +1,61 @@ +package com.baeldung.com.baeldung.continuetransactionafterexception; + +import java.util.HashMap; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.JpaVendorAdapter; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; + +import jakarta.persistence.EntityManagerFactory; + +@Configuration +@PropertySource("continuetransactionafterexception/test.properties") +public class ContinueWithTransactionAfterExceptionIntegrationConfiguration { + + @Bean + public DataSource dataSource() { + EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder(); + return dbBuilder.setType(EmbeddedDatabaseType.H2) + .build(); + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory(@Value("${hibernate.hbm2ddl.auto}") String hbm2ddlType, @Value("${hibernate.dialect}") String dialect, @Value("${hibernate.show_sql}") boolean showSql) { + LocalContainerEntityManagerFactoryBean result = new LocalContainerEntityManagerFactoryBean(); + + result.setDataSource(dataSource()); + result.setPackagesToScan("com.baeldung.continuetransactionafterexception.model"); + result.setJpaVendorAdapter(jpaVendorAdapter()); + + Map jpaProperties = new HashMap<>(); + jpaProperties.put("hibernate.hbm2ddl.auto", hbm2ddlType); + jpaProperties.put("hibernate.dialect", dialect); + jpaProperties.put("hibernate.show_sql", showSql); + result.setJpaPropertyMap(jpaProperties); + + return result; + } + + @Bean + public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory); + transactionManager.setNestedTransactionAllowed(true); + + return transactionManager; + } + + public JpaVendorAdapter jpaVendorAdapter() { + return new HibernateJpaVendorAdapter(); + } +} diff --git a/persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationTest.java b/persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationTest.java new file mode 100644 index 0000000000..7f5f60f556 --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/test/java/com/baeldung/com/baeldung/continuetransactionafterexception/ContinueWithTransactionAfterExceptionIntegrationTest.java @@ -0,0 +1,165 @@ +package com.baeldung.com.baeldung.continuetransactionafterexception; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.transaction.UnexpectedRollbackException; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.baeldung.continuetransactionafterexception.InvoiceRepository; +import com.baeldung.continuetransactionafterexception.InvoiceService; +import com.baeldung.continuetransactionafterexception.NotificationSendingException; +import com.baeldung.continuetransactionafterexception.model.InvoiceEntity; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + ContinueWithTransactionAfterExceptionIntegrationConfiguration.class, + InvoiceRepository.class, InvoiceService.class}) +@DirtiesContext +@EnableTransactionManagement +class ContinueWithTransactionAfterExceptionIntegrationTest { + + @Autowired + private InvoiceRepository repository; + @Autowired + private InvoiceService service; + + @Test + void givenInvoiceService_whenExceptionOccursDuringNotificationSending_thenNoDataShouldBeSaved() { + InvoiceEntity invoiceEntity = new InvoiceEntity(); + invoiceEntity.setSerialNumber("#1"); + invoiceEntity.setDescription("First invoice"); + + assertThrows( + NotificationSendingException.class, + () -> service.saveInvoice(invoiceEntity) + ); + + List entityList = repository.findAll(); + Assertions.assertTrue(entityList.isEmpty()); + } + + @Test + void givenInvoiceRepository_whenExceptionOccursDuringBatchSavingInternally_thenNoDataShouldBeSaved() { + + List testEntities = new ArrayList<>(); + + InvoiceEntity invoiceEntity = new InvoiceEntity(); + invoiceEntity.setSerialNumber("#1"); + invoiceEntity.setDescription("First invoice"); + testEntities.add(invoiceEntity); + + InvoiceEntity invoiceEntity2 = new InvoiceEntity(); + invoiceEntity2.setSerialNumber("#1"); + invoiceEntity.setDescription("First invoice (duplicated)"); + testEntities.add(invoiceEntity2); + + InvoiceEntity invoiceEntity3 = new InvoiceEntity(); + invoiceEntity3.setSerialNumber("#2"); + invoiceEntity.setDescription("Second invoice"); + testEntities.add(invoiceEntity3); + + UnexpectedRollbackException exception = assertThrows(UnexpectedRollbackException.class, + () -> repository.saveBatch(testEntities)); + assertEquals("Transaction silently rolled back because it has been marked as rollback-only", + exception.getMessage()); + + List entityList = repository.findAll(); + Assertions.assertTrue(entityList.isEmpty()); + } + + @Test + void givenInvoiceService_whenNotificationSendingExceptionOccurs_thenTheInvoiceBeSaved() { + InvoiceEntity invoiceEntity = new InvoiceEntity(); + invoiceEntity.setSerialNumber("#1"); + invoiceEntity.setDescription("We want to save this invoice anyway"); + + assertThrows( + NotificationSendingException.class, + () -> service.saveInvoiceWithoutRollback(invoiceEntity) + ); + + List entityList = repository.findAll(); + Assertions.assertTrue(entityList.contains(invoiceEntity)); + } + + @Test + void givenInvoiceRepository_whenExceptionOccursDuringBatchSavingInternally_thenDataShouldBeSavedInSeparateTransaction() { + + List testEntities = new ArrayList<>(); + + InvoiceEntity invoiceEntity1 = new InvoiceEntity(); + invoiceEntity1.setSerialNumber("#1"); + invoiceEntity1.setDescription("First invoice"); + testEntities.add(invoiceEntity1); + + InvoiceEntity invoiceEntity2 = new InvoiceEntity(); + invoiceEntity2.setSerialNumber("#1"); + invoiceEntity1.setDescription("First invoice (duplicated)"); + testEntities.add(invoiceEntity2); + + InvoiceEntity invoiceEntity3 = new InvoiceEntity(); + invoiceEntity3.setSerialNumber("#2"); + invoiceEntity1.setDescription("Second invoice"); + testEntities.add(invoiceEntity3); + + repository.saveBatchUsingManualTransaction(testEntities); + + List entityList = repository.findAll(); + Assertions.assertTrue(entityList.contains(invoiceEntity1)); + Assertions.assertTrue(entityList.contains(invoiceEntity3)); + } + + @Test + void givenInvoiceRepository_whenExceptionOccursDuringBatchSaving_thenDataShouldBeSavedUsingSaveMethod() { + + List testEntities = new ArrayList<>(); + + InvoiceEntity invoiceEntity1 = new InvoiceEntity(); + invoiceEntity1.setSerialNumber("#1"); + invoiceEntity1.setDescription("First invoice"); + testEntities.add(invoiceEntity1); + + InvoiceEntity invoiceEntity2 = new InvoiceEntity(); + invoiceEntity2.setSerialNumber("#1"); + invoiceEntity1.setDescription("First invoice (duplicated)"); + testEntities.add(invoiceEntity2); + + InvoiceEntity invoiceEntity3 = new InvoiceEntity(); + invoiceEntity3.setSerialNumber("#2"); + invoiceEntity1.setDescription("Second invoice"); + testEntities.add(invoiceEntity3); + + try { + repository.saveBatchOnly(testEntities); + } catch (Exception e) { + testEntities.forEach(t -> { + try { + repository.save(t); + } catch (Exception e2) { + System.err.println(e2.getMessage()); + } + }); + } + + List entityList = repository.findAll(); + Assertions.assertTrue(entityList.contains(invoiceEntity1)); + Assertions.assertTrue(entityList.contains(invoiceEntity3)); + } + + @AfterEach + void clean() { + repository.deleteAll(); + } +} diff --git a/persistence-modules/spring-jpa-3/src/test/resources/continuetransactionafterexception/test.properties b/persistence-modules/spring-jpa-3/src/test/resources/continuetransactionafterexception/test.properties new file mode 100644 index 0000000000..191dfc85f5 --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/test/resources/continuetransactionafterexception/test.properties @@ -0,0 +1,7 @@ +jdbc.driverClassName=org.h2.Driver +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=update diff --git a/persistence-modules/spring-jpa-3/src/test/resources/logback.xml b/persistence-modules/spring-jpa-3/src/test/resources/logback.xml new file mode 100644 index 0000000000..4ecb8017f3 --- /dev/null +++ b/persistence-modules/spring-jpa-3/src/test/resources/logback.xml @@ -0,0 +1,12 @@ + + + + + [%d{ISO8601}]-[%thread] %-5level %logger - %msg%n + + + + + + + From 11084b012dd39ade4f96a772584679cf405a7ee6 Mon Sep 17 00:00:00 2001 From: "ICKostiantyn.Ivanov" Date: Mon, 25 Mar 2024 21:40:03 +0100 Subject: [PATCH 2/5] BAEL-7297 - Add linebreak --- persistence-modules/spring-jpa-3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-jpa-3/pom.xml b/persistence-modules/spring-jpa-3/pom.xml index b8bbe511c0..a249de33ea 100644 --- a/persistence-modules/spring-jpa-3/pom.xml +++ b/persistence-modules/spring-jpa-3/pom.xml @@ -40,4 +40,4 @@ 3.2.4 - \ No newline at end of file + From 60751b2a06e0db28faff1ad9dc7c639e42d544f4 Mon Sep 17 00:00:00 2001 From: "ICKostiantyn.Ivanov" Date: Sun, 14 Apr 2024 18:10:26 +0200 Subject: [PATCH 3/5] BAEL-6346 - "Not a managed type" exception in Spring Data JPA --- .../spring-data-jpa-repo-4/pom.xml | 5 ++ .../EntityWithJakartaAnnotation.java | 10 +++ ...ntityWithJakartaAnnotationApplication.java | 8 +++ ...EntityWithJakartaAnnotationRepository.java | 7 ++ .../EntityWithoutAnnotation.java | 8 +++ .../EntityWithoutAnnotationApplication.java | 8 +++ .../EntityWithoutAnnotationRepository.java | 8 +++ .../EntityWithoutAnnotationFixed.java | 10 +++ ...tityWithoutAnnotationFixedApplication.java | 8 +++ ...ntityWithoutAnnotationFixedRepository.java | 8 +++ .../app/WrongEntityScanApplication.java | 11 ++++ .../entity/CorrectEntity.java | 10 +++ .../app/WrongEntityScanFixedApplication.java | 13 ++++ .../repository/CorrectEntityRepository.java | 9 +++ .../src/main/resources/application.properties | 2 +- ...otManagedTypeExceptionIntegrationTest.java | 66 +++++++++++++++++++ 16 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-repo-4/pom.xml b/persistence-modules/spring-data-jpa-repo-4/pom.xml index 2995949df3..ceda981de8 100644 --- a/persistence-modules/spring-data-jpa-repo-4/pom.xml +++ b/persistence-modules/spring-data-jpa-repo-4/pom.xml @@ -14,6 +14,11 @@ + + jakarta.persistence + jakarta.persistence-api + 3.1.0 + org.springframework.boot spring-boot-starter-web diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java new file mode 100644 index 0000000000..fe59f585ac --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java @@ -0,0 +1,10 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +@Entity +public class EntityWithJakartaAnnotation { + @Id + private Long id; +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java new file mode 100644 index 0000000000..1799ee8a9f --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EntityWithJakartaAnnotationApplication { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java new file mode 100644 index 0000000000..e8efdd60db --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EntityWithJakartaAnnotationRepository extends JpaRepository { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java new file mode 100644 index 0000000000..d0e2debb69 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation; + +import javax.persistence.Id; + +public class EntityWithoutAnnotation { + @Id + private Long id; +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java new file mode 100644 index 0000000000..d6e3eb465d --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EntityWithoutAnnotationApplication { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java new file mode 100644 index 0000000000..df079be550 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EntityWithoutAnnotationRepository + extends JpaRepository { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java new file mode 100644 index 0000000000..447dcb40c2 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java @@ -0,0 +1,10 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class EntityWithoutAnnotationFixed { + @Id + private Long id; +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java new file mode 100644 index 0000000000..f9537dc9f9 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EntityWithoutAnnotationFixedApplication { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java new file mode 100644 index 0000000000..6a2b90fdc7 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EntityWithoutAnnotationFixedRepository + extends JpaRepository { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java new file mode 100644 index 0000000000..0addf6e4ea --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java @@ -0,0 +1,11 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.app; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootApplication +@EnableJpaRepositories(basePackages = + "com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.repository") +public class WrongEntityScanApplication { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java new file mode 100644 index 0000000000..cf375cabdc --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java @@ -0,0 +1,10 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.entity; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class CorrectEntity { + @Id + private Long id; +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java new file mode 100644 index 0000000000..1d93c69129 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.fixed.app; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootApplication +@EnableJpaRepositories(basePackages = + "com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.repository") +@EntityScan("com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.entity") +public class WrongEntityScanFixedApplication { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java new file mode 100644 index 0000000000..2ccc1a7784 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.entity.CorrectEntity; + +public interface CorrectEntityRepository extends JpaRepository { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties index db4837d8d2..bf1459fb9d 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties @@ -1,7 +1,7 @@ +server.port=0 spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 spring.datasource.username=sa spring.datasource.password=sa - spring.jpa.properties.hibernate.globally_quoted_identifiers=true logging.level.com.baeldung.spring.data.persistence.search=debug diff --git a/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java b/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java new file mode 100644 index 0000000000..cc39443059 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java @@ -0,0 +1,66 @@ +package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.springframework.boot.SpringApplication.run; + +import org.junit.jupiter.api.Test; +import org.springframework.context.ConfigurableApplicationContext; + +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation.EntityWithoutAnnotationApplication; +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed.EntityWithoutAnnotationFixedApplication; +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed.EntityWithoutAnnotationFixedRepository; +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation.EntityWithJakartaAnnotationApplication; +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.app.WrongEntityScanApplication; +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.fixed.app.WrongEntityScanFixedApplication; +import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.repository.CorrectEntityRepository; + +class NotManagedTypeExceptionIntegrationTest { + @Test + void givenEntityWithoutAnnotationApplicationWhenBootstrapThenExpectedExceptionThrown() { + Exception exception = assertThrows(Exception.class, + () -> run(EntityWithoutAnnotationApplication.class)); + + assertThat(exception) + .getRootCause() + .hasMessageContaining("Not a managed type"); + } + + @Test + void givenEntityWithoutAnnotationApplicationFixedWhenBootstrapThenRepositoryBeanShouldBePresentInContext() { + ConfigurableApplicationContext context = run(EntityWithoutAnnotationFixedApplication.class); + EntityWithoutAnnotationFixedRepository repository = context + .getBean(EntityWithoutAnnotationFixedRepository.class); + + assertThat(repository).isNotNull(); + } + + @Test + void givenEntityWithJakartaAnnotationApplicationWhenBootstrapThenExpectedExceptionThrown() { + Exception exception = assertThrows(Exception.class, + () -> run(EntityWithJakartaAnnotationApplication.class)); + + assertThat(exception) + .getRootCause() + .hasMessageContaining("Not a managed type"); + } + + @Test + void givenWrongEntityScanApplicationWhenBootstrapThenExpectedExceptionThrown() { + Exception exception = assertThrows(Exception.class, + () -> run(WrongEntityScanApplication.class)); + + assertThat(exception) + .getRootCause() + .hasMessageContaining("Not a managed type"); + } + + @Test + void givenWrongEntityScanApplicationFixedWhenBootstrapThenRepositoryBeanShouldBePresentInContext() { + ConfigurableApplicationContext context = run(WrongEntityScanFixedApplication.class); + CorrectEntityRepository repository = context + .getBean(CorrectEntityRepository.class); + + assertThat(repository).isNotNull(); + } +} From 55769583dd042f8cb17c5da4c608e87ddb463310 Mon Sep 17 00:00:00 2001 From: "ICKostiantyn.Ivanov" Date: Mon, 15 Apr 2024 07:54:29 +0200 Subject: [PATCH 4/5] BAEL-6346 - Fixes according to editor comments --- .../spring-data-jpa-repo-4/pom.xml | 3 ++- .../EntityWithJakartaAnnotation.java | 2 +- ...ntityWithJakartaAnnotationApplication.java | 2 +- ...EntityWithJakartaAnnotationRepository.java | 2 +- .../EntityWithoutAnnotation.java | 2 +- .../EntityWithoutAnnotationApplication.java | 2 +- .../EntityWithoutAnnotationRepository.java | 2 +- .../EntityWithoutAnnotationFixed.java | 2 +- ...tityWithoutAnnotationFixedApplication.java | 2 +- ...ntityWithoutAnnotationFixedRepository.java | 2 +- .../app/WrongEntityScanApplication.java | 2 +- .../entity/CorrectEntity.java | 2 +- .../app/WrongEntityScanFixedApplication.java | 2 +- .../repository/CorrectEntityRepository.java | 9 +++++++ .../repository/CorrectEntityRepository.java | 9 ------- ...otManagedTypeExceptionIntegrationTest.java | 26 +++++++++---------- 16 files changed, 36 insertions(+), 35 deletions(-) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation => notamanagedtype/jakartaannotation}/EntityWithJakartaAnnotation.java (60%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation => notamanagedtype/jakartaannotation}/EntityWithJakartaAnnotationApplication.java (60%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation => notamanagedtype/jakartaannotation}/EntityWithJakartaAnnotationRepository.java (65%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation => notamanagedtype/missedannotation}/EntityWithoutAnnotation.java (52%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation => notamanagedtype/missedannotation}/EntityWithoutAnnotationApplication.java (61%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation => notamanagedtype/missedannotation}/EntityWithoutAnnotationRepository.java (65%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed => notamanagedtype/missedannotationfixed}/EntityWithoutAnnotationFixed.java (60%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed => notamanagedtype/missedannotationfixed}/EntityWithoutAnnotationFixedApplication.java (60%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed => notamanagedtype/missedannotationfixed}/EntityWithoutAnnotationFixedRepository.java (65%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication => notamanagedtype/missedentityscan}/app/WrongEntityScanApplication.java (78%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication => notamanagedtype/missedentityscan}/entity/CorrectEntity.java (56%) rename persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication => notamanagedtype/missedentityscan}/fixed/app/WrongEntityScanFixedApplication.java (83%) create mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/repository/CorrectEntityRepository.java delete mode 100644 persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java rename persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/{notamanagedtypeexceptioninspringdatajpa => notamanagedtype}/NotManagedTypeExceptionIntegrationTest.java (52%) diff --git a/persistence-modules/spring-data-jpa-repo-4/pom.xml b/persistence-modules/spring-data-jpa-repo-4/pom.xml index ceda981de8..79da23705a 100644 --- a/persistence-modules/spring-data-jpa-repo-4/pom.xml +++ b/persistence-modules/spring-data-jpa-repo-4/pom.xml @@ -17,7 +17,7 @@ jakarta.persistence jakarta.persistence-api - 3.1.0 + ${jakarta.persistence-api.version} org.springframework.boot @@ -147,6 +147,7 @@ 42.7.1 1.0.7 3.7.0 + 3.1.0 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotation.java similarity index 60% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotation.java index fe59f585ac..576cb23237 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotation.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotation.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation; +package com.baeldung.spring.notamanagedtype.jakartaannotation; import jakarta.persistence.Entity; import jakarta.persistence.Id; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotationApplication.java similarity index 60% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotationApplication.java index 1799ee8a9f..f46547a529 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationApplication.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotationApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation; +package com.baeldung.spring.notamanagedtype.jakartaannotation; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotationRepository.java similarity index 65% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotationRepository.java index e8efdd60db..28f8fee328 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithjakartaannotation/EntityWithJakartaAnnotationRepository.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/jakartaannotation/EntityWithJakartaAnnotationRepository.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation; +package com.baeldung.spring.notamanagedtype.jakartaannotation; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotation.java similarity index 52% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotation.java index d0e2debb69..261a4f5a0d 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotation.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotation.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation; +package com.baeldung.spring.notamanagedtype.missedannotation; import javax.persistence.Id; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotationApplication.java similarity index 61% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotationApplication.java index d6e3eb465d..ec30b830c9 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationApplication.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotationApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation; +package com.baeldung.spring.notamanagedtype.missedannotation; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotationRepository.java similarity index 65% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotationRepository.java index df079be550..60c96de0a4 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotation/EntityWithoutAnnotationRepository.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotation/EntityWithoutAnnotationRepository.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation; +package com.baeldung.spring.notamanagedtype.missedannotation; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixed.java similarity index 60% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixed.java index 447dcb40c2..c19b9aad6a 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixed.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixed.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed; +package com.baeldung.spring.notamanagedtype.missedannotationfixed; import javax.persistence.Entity; import javax.persistence.Id; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixedApplication.java similarity index 60% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixedApplication.java index f9537dc9f9..633eb87728 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedApplication.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixedApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed; +package com.baeldung.spring.notamanagedtype.missedannotationfixed; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixedRepository.java similarity index 65% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixedRepository.java index 6a2b90fdc7..29748e4b99 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/entitywithoutannotationfixed/EntityWithoutAnnotationFixedRepository.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedannotationfixed/EntityWithoutAnnotationFixedRepository.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed; +package com.baeldung.spring.notamanagedtype.missedannotationfixed; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/app/WrongEntityScanApplication.java similarity index 78% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/app/WrongEntityScanApplication.java index 0addf6e4ea..ecca84b234 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/app/WrongEntityScanApplication.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/app/WrongEntityScanApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.app; +package com.baeldung.spring.notamanagedtype.missedentityscan.app; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/entity/CorrectEntity.java similarity index 56% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/entity/CorrectEntity.java index cf375cabdc..6d2a033ee9 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/entity/CorrectEntity.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/entity/CorrectEntity.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.entity; +package com.baeldung.spring.notamanagedtype.missedentityscan.entity; import javax.persistence.Entity; import javax.persistence.Id; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/fixed/app/WrongEntityScanFixedApplication.java similarity index 83% rename from persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java rename to persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/fixed/app/WrongEntityScanFixedApplication.java index 1d93c69129..f6f790251e 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/fixed/app/WrongEntityScanFixedApplication.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/fixed/app/WrongEntityScanFixedApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.fixed.app; +package com.baeldung.spring.notamanagedtype.missedentityscan.fixed.app; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/repository/CorrectEntityRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/repository/CorrectEntityRepository.java new file mode 100644 index 0000000000..afcd47b853 --- /dev/null +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtype/missedentityscan/repository/CorrectEntityRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.spring.notamanagedtype.missedentityscan.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.baeldung.spring.notamanagedtype.missedentityscan.entity.CorrectEntity; + +public interface CorrectEntityRepository extends JpaRepository { + +} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java b/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java deleted file mode 100644 index 2ccc1a7784..0000000000 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/wrongentityscanapplication/repository/CorrectEntityRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.repository; - -import org.springframework.data.jpa.repository.JpaRepository; - -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.entity.CorrectEntity; - -public interface CorrectEntityRepository extends JpaRepository { - -} diff --git a/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java b/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java similarity index 52% rename from persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java rename to persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java index cc39443059..fda373f86d 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtypeexceptioninspringdatajpa/NotManagedTypeExceptionIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa; +package com.baeldung.spring.notamanagedtype; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -7,17 +7,17 @@ import static org.springframework.boot.SpringApplication.run; import org.junit.jupiter.api.Test; import org.springframework.context.ConfigurableApplicationContext; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotation.EntityWithoutAnnotationApplication; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed.EntityWithoutAnnotationFixedApplication; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithoutannotationfixed.EntityWithoutAnnotationFixedRepository; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.entitywithjakartaannotation.EntityWithJakartaAnnotationApplication; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.app.WrongEntityScanApplication; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.fixed.app.WrongEntityScanFixedApplication; -import com.baeldung.spring.notamanagedtypeexceptioninspringdatajpa.wrongentityscanapplication.repository.CorrectEntityRepository; +import com.baeldung.spring.notamanagedtype.missedannotation.EntityWithoutAnnotationApplication; +import com.baeldung.spring.notamanagedtype.missedannotationfixed.EntityWithoutAnnotationFixedApplication; +import com.baeldung.spring.notamanagedtype.missedannotationfixed.EntityWithoutAnnotationFixedRepository; +import com.baeldung.spring.notamanagedtype.jakartaannotation.EntityWithJakartaAnnotationApplication; +import com.baeldung.spring.notamanagedtype.missedentityscan.app.WrongEntityScanApplication; +import com.baeldung.spring.notamanagedtype.missedentityscan.fixed.app.WrongEntityScanFixedApplication; +import com.baeldung.spring.notamanagedtype.missedentityscan.repository.CorrectEntityRepository; class NotManagedTypeExceptionIntegrationTest { @Test - void givenEntityWithoutAnnotationApplicationWhenBootstrapThenExpectedExceptionThrown() { + void givenEntityWithoutAnnotationApplication_WhenBootstrap_ThenExpectedExceptionThrown() { Exception exception = assertThrows(Exception.class, () -> run(EntityWithoutAnnotationApplication.class)); @@ -27,7 +27,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenEntityWithoutAnnotationApplicationFixedWhenBootstrapThenRepositoryBeanShouldBePresentInContext() { + void givenEntityWithoutAnnotationApplicationFixed_WhenBootstrap_ThenRepositoryBeanShouldBePresentInContext() { ConfigurableApplicationContext context = run(EntityWithoutAnnotationFixedApplication.class); EntityWithoutAnnotationFixedRepository repository = context .getBean(EntityWithoutAnnotationFixedRepository.class); @@ -36,7 +36,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenEntityWithJakartaAnnotationApplicationWhenBootstrapThenExpectedExceptionThrown() { + void givenEntityWithJakartaAnnotationApplication_WhenBootstrap_ThenExpectedExceptionThrown() { Exception exception = assertThrows(Exception.class, () -> run(EntityWithJakartaAnnotationApplication.class)); @@ -46,7 +46,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenWrongEntityScanApplicationWhenBootstrapThenExpectedExceptionThrown() { + void givenWrongEntityScanApplication_WhenBootstrap_ThenExpectedExceptionThrown() { Exception exception = assertThrows(Exception.class, () -> run(WrongEntityScanApplication.class)); @@ -56,7 +56,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenWrongEntityScanApplicationFixedWhenBootstrapThenRepositoryBeanShouldBePresentInContext() { + void givenWrongEntityScanApplicationFixed_WhenBootstrap_ThenRepositoryBeanShouldBePresentInContext() { ConfigurableApplicationContext context = run(WrongEntityScanFixedApplication.class); CorrectEntityRepository repository = context .getBean(CorrectEntityRepository.class); From c8f82ab48e3ed455f672f311371532d1ff0c61b2 Mon Sep 17 00:00:00 2001 From: "ICKostiantyn.Ivanov" Date: Tue, 16 Apr 2024 08:15:49 +0200 Subject: [PATCH 5/5] BAEL-6346 - Fixes according to editor comments --- .../src/main/resources/application.properties | 1 - .../NotManagedTypeExceptionIntegrationTest.java | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties index bf1459fb9d..649c494792 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties +++ b/persistence-modules/spring-data-jpa-repo-4/src/main/resources/application.properties @@ -1,4 +1,3 @@ -server.port=0 spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 spring.datasource.username=sa spring.datasource.password=sa diff --git a/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java b/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java index fda373f86d..64e844d68c 100644 --- a/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo-4/src/test/java/com/baeldung/spring/notamanagedtype/NotManagedTypeExceptionIntegrationTest.java @@ -17,7 +17,7 @@ import com.baeldung.spring.notamanagedtype.missedentityscan.repository.CorrectEn class NotManagedTypeExceptionIntegrationTest { @Test - void givenEntityWithoutAnnotationApplication_WhenBootstrap_ThenExpectedExceptionThrown() { + void givenEntityWithoutAnnotationApplication_whenBootstrap_thenExpectedExceptionThrown() { Exception exception = assertThrows(Exception.class, () -> run(EntityWithoutAnnotationApplication.class)); @@ -27,7 +27,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenEntityWithoutAnnotationApplicationFixed_WhenBootstrap_ThenRepositoryBeanShouldBePresentInContext() { + void givenEntityWithoutAnnotationApplicationFixed_whenBootstrap_thenRepositoryBeanShouldBePresentInContext() { ConfigurableApplicationContext context = run(EntityWithoutAnnotationFixedApplication.class); EntityWithoutAnnotationFixedRepository repository = context .getBean(EntityWithoutAnnotationFixedRepository.class); @@ -36,7 +36,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenEntityWithJakartaAnnotationApplication_WhenBootstrap_ThenExpectedExceptionThrown() { + void givenEntityWithJakartaAnnotationApplication_whenBootstrap_thenExpectedExceptionThrown() { Exception exception = assertThrows(Exception.class, () -> run(EntityWithJakartaAnnotationApplication.class)); @@ -46,7 +46,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenWrongEntityScanApplication_WhenBootstrap_ThenExpectedExceptionThrown() { + void givenWrongEntityScanApplication_whenBootstrap_thenExpectedExceptionThrown() { Exception exception = assertThrows(Exception.class, () -> run(WrongEntityScanApplication.class)); @@ -56,7 +56,7 @@ class NotManagedTypeExceptionIntegrationTest { } @Test - void givenWrongEntityScanApplicationFixed_WhenBootstrap_ThenRepositoryBeanShouldBePresentInContext() { + void givenWrongEntityScanApplicationFixed_whenBootstrap_thenRepositoryBeanShouldBePresentInContext() { ConfigurableApplicationContext context = run(WrongEntityScanFixedApplication.class); CorrectEntityRepository repository = context .getBean(CorrectEntityRepository.class);