diff --git a/persistence-modules/java-jpa-2/README.md b/persistence-modules/java-jpa-2/README.md index d711eef1b0ff..c09ca906ba6c 100644 --- a/persistence-modules/java-jpa-2/README.md +++ b/persistence-modules/java-jpa-2/README.md @@ -4,9 +4,7 @@ This module contains articles about the Java Persistence API (JPA) in Java. ### Relevant Articles -- [JPA Query Parameters Usage](https://www.baeldung.com/jpa-query-parameters) - [Mapping Entity Class Names to SQL Table Names with JPA](https://www.baeldung.com/jpa-entity-table-names) -- [Default Column Values in JPA](https://www.baeldung.com/jpa-default-column-values) - [Types of JPA Queries](https://www.baeldung.com/jpa-queries) - [JPA/Hibernate Projections](https://www.baeldung.com/jpa-hibernate-projections) - [Combining JPA And/Or Criteria Predicates](https://www.baeldung.com/jpa-and-or-criteria-predicates) diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml index 50b9813523f8..ea6755d6b8b4 100644 --- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml @@ -39,23 +39,6 @@ - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.defaultvalues.User - com.baeldung.jpa.defaultvalues.UserEntity - true - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider com.baeldung.jpa.querytypes.UserEntity diff --git a/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml index 80ca1a3ead8c..ee86e4d545c3 100644 --- a/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml @@ -4,24 +4,6 @@ version="3.0" xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"> - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.queryparams.Employee - true - - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider @@ -39,23 +21,6 @@ - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.defaultvalues.User - com.baeldung.jpa.defaultvalues.UserEntity - true - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider com.baeldung.jpa.querytypes.UserEntity diff --git a/persistence-modules/java-jpa-3/README.md b/persistence-modules/java-jpa-3/README.md index 1cf7055413a2..e6b5f948e75a 100644 --- a/persistence-modules/java-jpa-3/README.md +++ b/persistence-modules/java-jpa-3/README.md @@ -10,7 +10,5 @@ This module contains articles about the Java Persistence API (JPA) in Java. - [JPA CascadeType.REMOVE vs orphanRemoval](https://www.baeldung.com/jpa-cascade-remove-vs-orphanremoval) - [A Guide to MultipleBagFetchException in Hibernate](https://www.baeldung.com/java-hibernate-multiplebagfetchexception) - [How to Convert a Hibernate Proxy to a Real Entity Object](https://www.baeldung.com/hibernate-proxy-to-real-entity-object) -- [Returning an Auto-Generated Id with JPA](https://www.baeldung.com/jpa-get-auto-generated-id) - [How to Return Multiple Entities in JPA Query](https://www.baeldung.com/jpa-return-multiple-entities) -- [Defining Unique Constraints in JPA](https://www.baeldung.com/jpa-unique-constraints) - [Connecting to a Specific Schema in JDBC](https://www.baeldung.com/jdbc-connect-to-schema) diff --git a/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml index 140531e30fb2..c55f64dac22b 100644 --- a/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-3/src/main/resources/META-INF/persistence.xml @@ -97,38 +97,7 @@ - - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.IdGeneration.User - true - - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.uniqueconstraints.Person - com.baeldung.jpa.uniqueconstraints.Address - true - - - - - - - - - - - + org.hibernate.jpa.HibernatePersistenceProvider com.baeldung.jpa.returnmultipleentities.Channel diff --git a/persistence-modules/java-jpa-4/README.md b/persistence-modules/java-jpa-4/README.md index 401caabfe0d5..8f92a55f5ca1 100644 --- a/persistence-modules/java-jpa-4/README.md +++ b/persistence-modules/java-jpa-4/README.md @@ -8,3 +8,9 @@ This module contains articles about the Java Persistence API (JPA) in Java. - [Clear Managed Entities in JPA/Hibernate](https://www.baeldung.com/hibernate-clear-managed-entities) - [Fixing the “Could Not Determine Recommended JdbcType for Class” Error in JPA](https://www.baeldung.com/jpa-could-not-determine-recommended-jdbctype-for-class) - [How to Clone a JPA Entity](https://www.baeldung.com/java-jpa-clone-entity) +- [A Guide to Stored Procedures with JPA](https://www.baeldung.com/jpa-stored-procedures) +- [JPA @Basic Annotation](https://www.baeldung.com/jpa-basic-annotation) +- [Fixing the JPA error “java.lang.String cannot be cast to Ljava.lang.String;”](https://www.baeldung.com/jpa-error-java-lang-string-cannot-be-cast) +- [Converting Between LocalDate and SQL Date](https://www.baeldung.com/java-convert-localdate-sql-date) +- [JPA Support for java.time Types](https://www.baeldung.com/jpa-java-time) +- [A Guide to SqlResultSetMapping](https://www.baeldung.com/jpa-sql-resultset-mapping) diff --git a/persistence-modules/java-jpa-4/pom.xml b/persistence-modules/java-jpa-4/pom.xml index 7b0e347d4198..59d387705594 100644 --- a/persistence-modules/java-jpa-4/pom.xml +++ b/persistence-modules/java-jpa-4/pom.xml @@ -50,6 +50,11 @@ modelmapper ${modelmapper.version} + + com.mysql + mysql-connector-j + ${mysql.version} + @@ -74,6 +79,7 @@ 2.17.0 1.9.4 3.2.1 + 8.4.0 \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/basicannotation/Course.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/basicannotation/Course.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/basicannotation/Course.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/basicannotation/Course.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/convertdates/LocalDateConverter.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/DateTimeEntityRepository.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/DateTimeEntityRepository.java similarity index 97% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/DateTimeEntityRepository.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/DateTimeEntityRepository.java index 2aa6fa60b6b6..2e6f5aa7a157 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/DateTimeEntityRepository.java +++ b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/DateTimeEntityRepository.java @@ -1,68 +1,68 @@ -package com.baeldung.jpa.datetime; - -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityManagerFactory; -import jakarta.persistence.Persistence; -import java.sql.Date; -import java.sql.Time; -import java.sql.Timestamp; -import java.time.*; -import java.util.Calendar; - -public class DateTimeEntityRepository { - private EntityManagerFactory emf = null; - - public DateTimeEntityRepository() { - emf = Persistence.createEntityManagerFactory("java8-datetime-postgresql"); - } - - public JPA22DateTimeEntity find(Long id) { - EntityManager entityManager = emf.createEntityManager(); - - JPA22DateTimeEntity dateTimeTypes = entityManager.find(JPA22DateTimeEntity.class, id); - - entityManager.close(); - return dateTimeTypes; - } - - public void save(Long id) { - JPA22DateTimeEntity dateTimeTypes = new JPA22DateTimeEntity(); - dateTimeTypes.setId(id); - - //java.sql types: date/time - dateTimeTypes.setSqlTime(Time.valueOf(LocalTime.now())); - dateTimeTypes.setSqlDate(Date.valueOf(LocalDate.now())); - dateTimeTypes.setSqlTimestamp(Timestamp.valueOf(LocalDateTime.now())); - - //java.util types: date/calendar - java.util.Date date = new java.util.Date(); - dateTimeTypes.setUtilTime(date); - dateTimeTypes.setUtilDate(date); - dateTimeTypes.setUtilTimestamp(date); - - //Calendar - Calendar calendar = Calendar.getInstance(); - dateTimeTypes.setCalendarTime(calendar); - dateTimeTypes.setCalendarDate(calendar); - dateTimeTypes.setCalendarTimestamp(calendar); - - //java.time types - dateTimeTypes.setLocalTime(LocalTime.now()); - dateTimeTypes.setLocalDate(LocalDate.now()); - dateTimeTypes.setLocalDateTime(LocalDateTime.now()); - - //java.time types with offset - dateTimeTypes.setOffsetTime(OffsetTime.now()); - dateTimeTypes.setOffsetDateTime(OffsetDateTime.now()); - - EntityManager entityManager = emf.createEntityManager(); - entityManager.getTransaction().begin(); - entityManager.persist(dateTimeTypes); - entityManager.getTransaction().commit(); - entityManager.close(); - } - - public void clean() { - emf.close(); - } -} +package com.baeldung.jpa.datetime; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; +import java.sql.Date; +import java.sql.Time; +import java.sql.Timestamp; +import java.time.*; +import java.util.Calendar; + +public class DateTimeEntityRepository { + private EntityManagerFactory emf = null; + + public DateTimeEntityRepository() { + emf = Persistence.createEntityManagerFactory("java8-datetime-postgresql"); + } + + public JPA22DateTimeEntity find(Long id) { + EntityManager entityManager = emf.createEntityManager(); + + JPA22DateTimeEntity dateTimeTypes = entityManager.find(JPA22DateTimeEntity.class, id); + + entityManager.close(); + return dateTimeTypes; + } + + public void save(Long id) { + JPA22DateTimeEntity dateTimeTypes = new JPA22DateTimeEntity(); + dateTimeTypes.setId(id); + + //java.sql types: date/time + dateTimeTypes.setSqlTime(Time.valueOf(LocalTime.now())); + dateTimeTypes.setSqlDate(Date.valueOf(LocalDate.now())); + dateTimeTypes.setSqlTimestamp(Timestamp.valueOf(LocalDateTime.now())); + + //java.util types: date/calendar + java.util.Date date = new java.util.Date(); + dateTimeTypes.setUtilTime(date); + dateTimeTypes.setUtilDate(date); + dateTimeTypes.setUtilTimestamp(date); + + //Calendar + Calendar calendar = Calendar.getInstance(); + dateTimeTypes.setCalendarTime(calendar); + dateTimeTypes.setCalendarDate(calendar); + dateTimeTypes.setCalendarTimestamp(calendar); + + //java.time types + dateTimeTypes.setLocalTime(LocalTime.now()); + dateTimeTypes.setLocalDate(LocalDate.now()); + dateTimeTypes.setLocalDateTime(LocalDateTime.now()); + + //java.time types with offset + dateTimeTypes.setOffsetTime(OffsetTime.now()); + dateTimeTypes.setOffsetDateTime(OffsetDateTime.now()); + + EntityManager entityManager = emf.createEntityManager(); + entityManager.getTransaction().begin(); + entityManager.persist(dateTimeTypes); + entityManager.getTransaction().commit(); + entityManager.close(); + } + + public void clean() { + emf.close(); + } +} diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/JPA22DateTimeEntity.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/JPA22DateTimeEntity.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/JPA22DateTimeEntity.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/JPA22DateTimeEntity.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/MainApp.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/MainApp.java similarity index 96% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/MainApp.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/MainApp.java index 7f23f44254d3..061acce0d808 100644 --- a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/datetime/MainApp.java +++ b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/datetime/MainApp.java @@ -1,18 +1,18 @@ -package com.baeldung.jpa.datetime; - -public class MainApp { - - public static void main(String... args) { - - DateTimeEntityRepository dateTimeEntityRepository = new DateTimeEntityRepository(); - - //Persist - dateTimeEntityRepository.save(100L); - - //Find - JPA22DateTimeEntity dateTimeEntity = dateTimeEntityRepository.find(100L); - - dateTimeEntityRepository.clean(); - } - +package com.baeldung.jpa.datetime; + +public class MainApp { + + public static void main(String... args) { + + DateTimeEntityRepository dateTimeEntityRepository = new DateTimeEntityRepository(); + + //Persist + dateTimeEntityRepository.save(100L); + + //Find + JPA22DateTimeEntity dateTimeEntity = dateTimeEntityRepository.find(100L); + + dateTimeEntityRepository.clean(); + } + } \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/model/Car.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/model/Car.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/model/Car.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/model/Car.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/sqlresultsetmapping/Employee.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/sqlresultsetmapping/ScheduledDay.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/Message.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/stringcast/Message.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/Message.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/stringcast/Message.java diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java b/persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java similarity index 100% rename from persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java rename to persistence-modules/java-jpa-4/src/main/java/com/baeldung/jpa/stringcast/QueryExecutor.java diff --git a/persistence-modules/java-jpa-4/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-4/src/main/resources/META-INF/persistence.xml index f1908cceaab4..bc0ee67d6b4c 100644 --- a/persistence-modules/java-jpa-4/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-4/src/main/resources/META-INF/persistence.xml @@ -179,4 +179,72 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.model.Car + true + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.sqlresultsetmapping.ScheduledDay + com.baeldung.jpa.sqlresultsetmapping.Employee + com.baeldung.jpa.basicannotation.Course + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.stringcast.Message + true + + + + + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + com.baeldung.jpa.datetime.JPA22DateTimeEntity + true + + + + + + + + + + + + + diff --git a/persistence-modules/java-jpa/src/main/resources/config/database/FindCarByYearProcedureMySQL.sql b/persistence-modules/java-jpa-4/src/main/resources/config/database/FindCarByYearProcedureMySQL.sql similarity index 100% rename from persistence-modules/java-jpa/src/main/resources/config/database/FindCarByYearProcedureMySQL.sql rename to persistence-modules/java-jpa-4/src/main/resources/config/database/FindCarByYearProcedureMySQL.sql diff --git a/persistence-modules/java-jpa/src/main/resources/config/database/create_table_mysql.sql b/persistence-modules/java-jpa-4/src/main/resources/config/database/create_table_mysql.sql similarity index 100% rename from persistence-modules/java-jpa/src/main/resources/config/database/create_table_mysql.sql rename to persistence-modules/java-jpa-4/src/main/resources/config/database/create_table_mysql.sql diff --git a/persistence-modules/java-jpa/src/main/resources/config/database/insert_cars.sql b/persistence-modules/java-jpa-4/src/main/resources/config/database/insert_cars.sql similarity index 100% rename from persistence-modules/java-jpa/src/main/resources/config/database/insert_cars.sql rename to persistence-modules/java-jpa-4/src/main/resources/config/database/insert_cars.sql diff --git a/persistence-modules/java-jpa/src/main/resources/database.sql b/persistence-modules/java-jpa-4/src/main/resources/database.sql similarity index 96% rename from persistence-modules/java-jpa/src/main/resources/database.sql rename to persistence-modules/java-jpa-4/src/main/resources/database.sql index 96fa5b3b0967..2242322ba7b2 100644 --- a/persistence-modules/java-jpa/src/main/resources/database.sql +++ b/persistence-modules/java-jpa-4/src/main/resources/database.sql @@ -1,3 +1,8 @@ + +CREATE TABLE COURSE +(id BIGINT, + name VARCHAR(10)); + CREATE TABLE EMPLOYEE (id BIGINT, name VARCHAR(10)); @@ -15,7 +20,3 @@ INSERT INTO SCHEDULE_DAYS (employeeId, dayOfWeek) VALUES (1, 'FRIDAY'); INSERT INTO SCHEDULE_DAYS (employeeId, dayOfWeek) VALUES (2, 'SATURDAY'); INSERT INTO SCHEDULE_DAYS (employeeId, dayOfWeek) VALUES (3, 'MONDAY'); INSERT INTO SCHEDULE_DAYS (employeeId, dayOfWeek) VALUES (3, 'FRIDAY'); - -CREATE TABLE COURSE -(id BIGINT, - name VARCHAR(10)); \ No newline at end of file diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/basicannotation/BasicAnnotationIntegrationTest.java b/persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/basicannotation/BasicAnnotationIntegrationTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/basicannotation/BasicAnnotationIntegrationTest.java rename to persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/basicannotation/BasicAnnotationIntegrationTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/convertdates/LocalDateTimeToSqlDateUnitTest.java b/persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/convertdates/LocalDateTimeToSqlDateUnitTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/convertdates/LocalDateTimeToSqlDateUnitTest.java rename to persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/convertdates/LocalDateTimeToSqlDateUnitTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java b/persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java rename to persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/sqlresultsetmapping/SqlResultSetMappingUnitTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureLiveTest.java b/persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureLiveTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureLiveTest.java rename to persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureLiveTest.java diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java b/persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java similarity index 100% rename from persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java rename to persistence-modules/java-jpa-4/src/test/java/com/baeldung/jpa/stringcast/SpringCastUnitTest.java diff --git a/persistence-modules/java-jpa/src/test/resources/employees.sql b/persistence-modules/java-jpa-4/src/test/resources/employees.sql similarity index 100% rename from persistence-modules/java-jpa/src/test/resources/employees.sql rename to persistence-modules/java-jpa-4/src/test/resources/employees.sql diff --git a/persistence-modules/java-jpa/src/test/resources/scheduledDays.sql b/persistence-modules/java-jpa-4/src/test/resources/scheduledDays.sql similarity index 100% rename from persistence-modules/java-jpa/src/test/resources/scheduledDays.sql rename to persistence-modules/java-jpa-4/src/test/resources/scheduledDays.sql diff --git a/persistence-modules/java-jpa/README.md b/persistence-modules/java-jpa/README.md index f6410f7b0ef7..63912f2acd0d 100644 --- a/persistence-modules/java-jpa/README.md +++ b/persistence-modules/java-jpa/README.md @@ -4,14 +4,12 @@ This module contains articles about the Java Persistence API (JPA) in Java. ### Relevant Articles -- [A Guide to SqlResultSetMapping](https://www.baeldung.com/jpa-sql-resultset-mapping) -- [A Guide to Stored Procedures with JPA](https://www.baeldung.com/jpa-stored-procedures) -- [Fixing the JPA error “java.lang.String cannot be cast to Ljava.lang.String;”](https://www.baeldung.com/jpa-error-java-lang-string-cannot-be-cast) - [JPA Entity Graph](https://www.baeldung.com/jpa-entity-graph) -- [JPA Support for java.time Types](https://www.baeldung.com/jpa-java-time) -- [Converting Between LocalDate and SQL Date](https://www.baeldung.com/java-convert-localdate-sql-date) - [Composite Primary Keys in JPA](https://www.baeldung.com/jpa-composite-primary-keys) - [Defining JPA Entities](https://www.baeldung.com/jpa-entities) -- [JPA @Basic Annotation](https://www.baeldung.com/jpa-basic-annotation) - [Persisting Enums in JPA](https://www.baeldung.com/jpa-persisting-enums-in-jpa) - More articles: [[next -->]](/persistence-modules/java-jpa-2) +- [JPA Query Parameters Usage](https://www.baeldung.com/jpa-query-parameters) +- [Default Column Values in JPA](https://www.baeldung.com/jpa-default-column-values) +- [Returning an Auto-Generated Id with JPA](https://www.baeldung.com/jpa-get-auto-generated-id) +- [Defining Unique Constraints in JPA](https://www.baeldung.com/jpa-unique-constraints) diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/IdGeneration/User.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/IdGeneration/User.java similarity index 100% rename from persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/IdGeneration/User.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/IdGeneration/User.java diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/IdGeneration/UserService.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/IdGeneration/UserService.java similarity index 100% rename from persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/IdGeneration/UserService.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/IdGeneration/UserService.java diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/User.java similarity index 100% rename from persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/User.java diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserEntity.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserEntity.java similarity index 100% rename from persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserEntity.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserEntity.java diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserEntityRepository.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserEntityRepository.java similarity index 100% rename from persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserEntityRepository.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserEntityRepository.java diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java similarity index 100% rename from persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/defaultvalues/UserRepository.java diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/queryparams/Employee.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/queryparams/Employee.java similarity index 100% rename from persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/queryparams/Employee.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/queryparams/Employee.java diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/uniqueconstraints/Address.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/uniqueconstraints/Address.java similarity index 100% rename from persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/uniqueconstraints/Address.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/uniqueconstraints/Address.java diff --git a/persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/uniqueconstraints/Person.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/uniqueconstraints/Person.java similarity index 100% rename from persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/uniqueconstraints/Person.java rename to persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/uniqueconstraints/Person.java diff --git a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml index 2261a45d0831..ac14237723ae 100644 --- a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml @@ -4,27 +4,8 @@ version="3.0" xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"> - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.sqlresultsetmapping.ScheduledDay - com.baeldung.jpa.sqlresultsetmapping.Employee - com.baeldung.jpa.basicannotation.Course - true - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.stringcast.Message com.baeldung.jpa.enums.Article com.baeldung.jpa.enums.CategoryConverter true @@ -40,21 +21,6 @@ - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.model.Car - true - - - - - - - - - - - com.baeldung.jpa.entitygraph.model.Post com.baeldung.jpa.entitygraph.model.User @@ -69,25 +35,6 @@ - - org.eclipse.persistence.jpa.PersistenceProvider - com.baeldung.jpa.datetime.JPA22DateTimeEntity - true - - - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider com.baeldung.jpa.entity.Student @@ -107,5 +54,56 @@ + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.defaultvalues.User + com.baeldung.jpa.defaultvalues.UserEntity + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.IdGeneration.User + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.uniqueconstraints.Person + com.baeldung.jpa.uniqueconstraints.Address + true + + + + + + + + + + + diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/IdGeneration/IdGenerationIntegrationTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/IdGeneration/IdGenerationIntegrationTest.java similarity index 100% rename from persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/IdGeneration/IdGenerationIntegrationTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/IdGeneration/IdGenerationIntegrationTest.java diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java similarity index 100% rename from persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/defaultvalues/UserDefaultValuesUnitTest.java diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/queryparams/JPAQueryParamsUnitTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/queryparams/JPAQueryParamsUnitTest.java similarity index 100% rename from persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/queryparams/JPAQueryParamsUnitTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/queryparams/JPAQueryParamsUnitTest.java diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueColumnIntegrationTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueColumnIntegrationTest.java similarity index 91% rename from persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueColumnIntegrationTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueColumnIntegrationTest.java index 5a275f5a440b..229062e7e3f5 100644 --- a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueColumnIntegrationTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueColumnIntegrationTest.java @@ -2,15 +2,15 @@ import java.util.Optional; -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityManagerFactory; -import jakarta.persistence.Persistence; - -import org.hibernate.exception.ConstraintViolationException; +import org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException; import org.junit.Assert; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; + public class UniqueColumnIntegrationTest { private static EntityManagerFactory factory; @@ -44,7 +44,7 @@ public void whenPersistPersonWithSameNumber_thenConstraintViolationException() { } catch (Exception ex) { Assert.assertTrue(Optional.of(ex) .map(Throwable::getCause) - .filter(x -> x instanceof ConstraintViolationException) + .filter(x -> x instanceof JdbcSQLIntegrityConstraintViolationException) .isPresent()); } finally { entityManager.getTransaction().rollback(); @@ -73,7 +73,7 @@ public void whenPersistPersonWithSameEmail_thenConstraintViolationException() { } catch (Exception ex) { Assert.assertTrue(Optional.of(ex) .map(Throwable::getCause) - .filter(x -> x instanceof ConstraintViolationException) + .filter(x -> x instanceof JdbcSQLIntegrityConstraintViolationException) .isPresent()); } finally { entityManager.getTransaction().rollback(); @@ -107,7 +107,7 @@ public void whenPersistPersonWithSameAddress_thenConstraintViolationException() } catch (Exception ex) { Assert.assertTrue(Optional.of(ex) .map(Throwable::getCause) - .filter(x -> x instanceof ConstraintViolationException) + .filter(x -> x instanceof JdbcSQLIntegrityConstraintViolationException) .isPresent()); } finally { entityManager.getTransaction().rollback(); diff --git a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueConstraintIntegrationTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueConstraintIntegrationTest.java similarity index 91% rename from persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueConstraintIntegrationTest.java rename to persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueConstraintIntegrationTest.java index 2bfbfd4ba69a..bf91636f258b 100644 --- a/persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueConstraintIntegrationTest.java +++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/uniqueconstraints/UniqueConstraintIntegrationTest.java @@ -2,15 +2,15 @@ import java.util.Optional; -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityManagerFactory; -import jakarta.persistence.Persistence; - -import org.hibernate.exception.ConstraintViolationException; +import org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException; import org.junit.Assert; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; + public class UniqueConstraintIntegrationTest { private static EntityManagerFactory factory; private static EntityManager entityManager; @@ -43,7 +43,7 @@ public void whenPersistPersonWithSameNumberAndStatus_thenConstraintViolationExce } catch (Exception ex) { Assert.assertTrue(Optional.of(ex) .map(Throwable::getCause) - .filter(x -> x instanceof ConstraintViolationException) + .filter(x -> x instanceof JdbcSQLIntegrityConstraintViolationException) .isPresent()); } finally { entityManager.getTransaction().rollback(); @@ -72,7 +72,7 @@ public void whenPersistPersonWithSameSCodeAndDecode_thenConstraintViolationExcep } catch (Exception ex) { Assert.assertTrue(Optional.of(ex) .map(Throwable::getCause) - .filter(x -> x instanceof ConstraintViolationException) + .filter(x -> x instanceof JdbcSQLIntegrityConstraintViolationException) .isPresent()); } finally { entityManager.getTransaction().rollback(); @@ -104,7 +104,7 @@ public void whenPersistPersonWithSameNumberAndAddress_thenConstraintViolationExc } catch (Exception ex) { Assert.assertTrue(Optional.of(ex) .map(Throwable::getCause) - .filter(x -> x instanceof ConstraintViolationException) + .filter(x -> x instanceof JdbcSQLIntegrityConstraintViolationException) .isPresent()); } finally { entityManager.getTransaction().rollback(); diff --git a/persistence-modules/java-jpa/src/test/resources/META-INF/persistence.xml b/persistence-modules/java-jpa/src/test/resources/META-INF/persistence.xml new file mode 100644 index 000000000000..75ca7c425a5a --- /dev/null +++ b/persistence-modules/java-jpa/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,42 @@ + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.queryparams.Employee + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.defaultvalues.User + com.baeldung.jpa.defaultvalues.UserEntity + true + + + + + + + + + + + + + diff --git a/persistence-modules/java-jpa-2/src/test/resources/queryparams.sql b/persistence-modules/java-jpa/src/test/resources/queryparams.sql similarity index 100% rename from persistence-modules/java-jpa-2/src/test/resources/queryparams.sql rename to persistence-modules/java-jpa/src/test/resources/queryparams.sql