diff --git a/jpa-one-to-many-demo/Hibernate one to many mapping example.postman_collection.json b/jpa-one-to-many-demo/Hibernate one to many mapping example.postman_collection.json
new file mode 100644
index 0000000..e535dc1
--- /dev/null
+++ b/jpa-one-to-many-demo/Hibernate one to many mapping example.postman_collection.json
@@ -0,0 +1,183 @@
+{
+ "id": "50f06778-83f3-3359-8bc5-cc3d0bdf582d",
+ "name": "Hibernate one to many mapping example",
+ "description": "",
+ "order": [
+ "15826d80-cf0a-78c9-1acf-36fef67d89fc",
+ "095e803e-c84e-6e66-c785-83930184de23",
+ "1086cdf7-fb9e-305a-1118-b4a1e3335453",
+ "df740598-560e-5b22-8c65-f719411d1d24"
+ ],
+ "folders": [],
+ "folders_order": [],
+ "timestamp": 1569687636029,
+ "owner": "2037757",
+ "public": false,
+ "requests": [
+ {
+ "id": "095e803e-c84e-6e66-c785-83930184de23",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/posts?page=0&size=3&sort=createdAt,desc",
+ "queryParams": [
+ {
+ "key": "page",
+ "value": "0",
+ "equals": true,
+ "description": "",
+ "enabled": true
+ },
+ {
+ "key": "size",
+ "value": "3",
+ "equals": true,
+ "description": "",
+ "enabled": true
+ },
+ {
+ "key": "sort",
+ "value": "createdAt,desc",
+ "equals": true,
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "preRequestScript": null,
+ "pathVariables": {},
+ "pathVariableData": [],
+ "method": "GET",
+ "data": null,
+ "dataMode": "params",
+ "version": 2,
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "time": 1569689480899,
+ "name": "Retrieve all posts",
+ "description": "",
+ "collectionId": "50f06778-83f3-3359-8bc5-cc3d0bdf582d",
+ "responses": []
+ },
+ {
+ "id": "1086cdf7-fb9e-305a-1118-b4a1e3335453",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/posts/1/comments",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "POST",
+ "collectionId": "50f06778-83f3-3359-8bc5-cc3d0bdf582d",
+ "data": [],
+ "dataMode": "raw",
+ "name": "Create comment",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569689148814,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "rawModeData": "{\n\t\"text\": \"it's nice post\"\n}"
+ },
+ {
+ "id": "15826d80-cf0a-78c9-1acf-36fef67d89fc",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/posts",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "POST",
+ "collectionId": "50f06778-83f3-3359-8bc5-cc3d0bdf582d",
+ "data": [],
+ "dataMode": "raw",
+ "name": "Create post",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569687903992,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "rawModeData": "{\n\t\"title\": \"post 1\",\n\t\"description\": \"post 1 description\",\n\t\"content\": \"post 1 content\"\n}"
+ },
+ {
+ "id": "df740598-560e-5b22-8c65-f719411d1d24",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/posts/1/comments?page=0&size=3&sort=createdAt,desc",
+ "queryParams": [
+ {
+ "key": "page",
+ "value": "0",
+ "equals": true,
+ "description": "",
+ "enabled": true
+ },
+ {
+ "key": "size",
+ "value": "3",
+ "equals": true,
+ "description": "",
+ "enabled": true
+ },
+ {
+ "key": "sort",
+ "value": "createdAt,desc",
+ "equals": true,
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "GET",
+ "collectionId": "50f06778-83f3-3359-8bc5-cc3d0bdf582d",
+ "data": null,
+ "dataMode": "params",
+ "name": "Retrieve all comments of a post",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569689513143,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {}
+ }
+ ]
+}
\ No newline at end of file
diff --git a/jpa-one-to-many-demo/pom.xml b/jpa-one-to-many-demo/pom.xml
index 69e2760..8609bc2 100644
--- a/jpa-one-to-many-demo/pom.xml
+++ b/jpa-one-to-many-demo/pom.xml
@@ -38,6 +38,13 @@
mysql
mysql-connector-java
runtime
+ 8.0.13
+
+
+
+ org.hibernate
+ hibernate-core
+ 5.3.1.Final
org.springframework.boot
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/JpaOneToManyDemoApplication.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/JpaOneToManyDemoApplication.java
similarity index 87%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/JpaOneToManyDemoApplication.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/JpaOneToManyDemoApplication.java
index cdf57c7..821940a 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/JpaOneToManyDemoApplication.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/JpaOneToManyDemoApplication.java
@@ -1,9 +1,13 @@
-package com.example.jpa;
+package com.amit.jpa;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
-
+/**
+*
+* @author Amit Patil
+*
+**/
@SpringBootApplication
@EnableJpaAuditing
public class JpaOneToManyDemoApplication {
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/controller/CommentController.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/controller/CommentController.java
similarity index 89%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/controller/CommentController.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/controller/CommentController.java
index d8723d4..4511b8e 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/controller/CommentController.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/controller/CommentController.java
@@ -1,9 +1,10 @@
-package com.example.jpa.controller;
+package com.amit.jpa.controller;
+
+import com.amit.jpa.exception.ResourceNotFoundException;
+import com.amit.jpa.model.Comment;
+import com.amit.jpa.repository.CommentRepository;
+import com.amit.jpa.repository.PostRepository;
-import com.example.jpa.exception.ResourceNotFoundException;
-import com.example.jpa.model.Comment;
-import com.example.jpa.repository.CommentRepository;
-import com.example.jpa.repository.PostRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -11,8 +12,13 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-
+/**
+*
+* @author Amit Patil
+*
+**/
@RestController
+@RequestMapping("/v1")
public class CommentController {
@Autowired
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/controller/PostController.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/controller/PostController.java
similarity index 87%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/controller/PostController.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/controller/PostController.java
index 23dca85..d1d2b9e 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/controller/PostController.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/controller/PostController.java
@@ -1,8 +1,9 @@
-package com.example.jpa.controller;
+package com.amit.jpa.controller;
+
+import com.amit.jpa.exception.ResourceNotFoundException;
+import com.amit.jpa.model.Post;
+import com.amit.jpa.repository.PostRepository;
-import com.example.jpa.exception.ResourceNotFoundException;
-import com.example.jpa.model.Post;
-import com.example.jpa.repository.PostRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -10,8 +11,13 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-
+/**
+*
+* @author Amit Patil
+*
+**/
@RestController
+@RequestMapping("/v1")
public class PostController {
@Autowired
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/exception/ResourceNotFoundException.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/exception/ResourceNotFoundException.java
similarity index 69%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/exception/ResourceNotFoundException.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/exception/ResourceNotFoundException.java
index 8e2cf36..b4acef4 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/exception/ResourceNotFoundException.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/exception/ResourceNotFoundException.java
@@ -1,11 +1,20 @@
-package com.example.jpa.exception;
+package com.amit.jpa.exception;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
-
+/**
+*
+* @author Amit Patil
+*
+**/
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
- public ResourceNotFoundException() {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6284714764240841538L;
+
+ public ResourceNotFoundException() {
super();
}
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/AuditModel.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/AuditModel.java
similarity index 74%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/model/AuditModel.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/AuditModel.java
index 4c8eda7..239a448 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/AuditModel.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/AuditModel.java
@@ -1,15 +1,24 @@
-package com.example.jpa.model;
+package com.amit.jpa.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.EntityListeners;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
-import javax.persistence.*;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.Date;
-
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+/**
+*
+* @author Amit Patil
+*
+**/
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(
@@ -17,7 +26,12 @@
allowGetters = true
)
public abstract class AuditModel implements Serializable {
- @Temporal(TemporalType.TIMESTAMP)
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3515832039273653354L;
+
+ @Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_at", nullable = false, updatable = false)
@CreatedDate
private Date createdAt;
diff --git a/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/Comment.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/Comment.java
new file mode 100644
index 0000000..760a412
--- /dev/null
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/Comment.java
@@ -0,0 +1,59 @@
+package com.amit.jpa.model;
+
+import com.fasterxml.jackson.annotation.*;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.annotations.OnDelete;
+import org.hibernate.annotations.OnDeleteAction;
+
+/**
+ *
+ * @author Amit Patil
+ *
+ **/
+@Entity
+@Table(name = "comments")
+public class Comment extends AuditModel {
+ @Id
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceComment")
+ @SequenceGenerator(name = "sequenceComment", allocationSize = 10)
+ private Long id;
+
+ @NotNull
+ @Lob
+ private String text;
+
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
+ @JoinColumn(name = "post_id", nullable = false)
+ @OnDelete(action = OnDeleteAction.CASCADE)
+ @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
+ @JsonIdentityReference(alwaysAsId = true)
+ @JsonProperty("post_id")
+ private Post post;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public Post getPost() {
+ return post;
+ }
+
+ public void setPost(Post post) {
+ this.post = post;
+ }
+}
diff --git a/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/Post.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/Post.java
new file mode 100644
index 0000000..3cbc642
--- /dev/null
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/model/Post.java
@@ -0,0 +1,65 @@
+package com.amit.jpa.model;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+/**
+ *
+ * @author Amit Patil
+ *
+ **/
+@Entity
+@Table(name = "posts")
+public class Post extends AuditModel {
+ @Id
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequencePost")
+ @SequenceGenerator(name = "sequencePost", allocationSize = 10)
+ private Long id;
+
+ @NotNull
+ @Size(max = 100)
+ @Column(unique = true)
+ private String title;
+
+ @NotNull
+ @Size(max = 250)
+ private String description;
+
+ @NotNull
+ @Lob
+// @Column(name = "content", nullable = false, columnDefinition = "CLOB")
+ private String content;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+}
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/repository/CommentRepository.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/repository/CommentRepository.java
similarity index 78%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/repository/CommentRepository.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/repository/CommentRepository.java
index 15684d3..9bd1fce 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/repository/CommentRepository.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/repository/CommentRepository.java
@@ -1,16 +1,18 @@
-package com.example.jpa.repository;
+package com.amit.jpa.repository;
-import com.example.jpa.model.Comment;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
-import java.util.Optional;
+import com.amit.jpa.model.Comment;
+import java.util.Optional;
/**
- * Created by rajeevkumarsingh on 21/11/17.
- */
+*
+* @author Amit Patil
+*
+**/
@Repository
public interface CommentRepository extends JpaRepository {
Page findByPostId(Long postId, Pageable pageable);
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/repository/PostRepository.java b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/repository/PostRepository.java
similarity index 62%
rename from jpa-one-to-many-demo/src/main/java/com/example/jpa/repository/PostRepository.java
rename to jpa-one-to-many-demo/src/main/java/com/amit/jpa/repository/PostRepository.java
index 4de0b39..4377898 100644
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/repository/PostRepository.java
+++ b/jpa-one-to-many-demo/src/main/java/com/amit/jpa/repository/PostRepository.java
@@ -1,12 +1,14 @@
-package com.example.jpa.repository;
+package com.amit.jpa.repository;
-import com.example.jpa.model.Post;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+import com.amit.jpa.model.Post;
/**
- * Created by rajeevkumarsingh on 21/11/17.
- */
+*
+* @author Amit Patil
+*
+**/
@Repository
public interface PostRepository extends JpaRepository {
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/Comment.java b/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/Comment.java
deleted file mode 100644
index 29f33bb..0000000
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/Comment.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.example.jpa.model;
-
-import com.fasterxml.jackson.annotation.*;
-
-import javax.persistence.*;
-import javax.validation.constraints.NotNull;
-
-import org.hibernate.annotations.OnDelete;
-import org.hibernate.annotations.OnDeleteAction;
-
-/**
- * Created by rajeevkumarsingh on 21/11/17.
- */
-@Entity
-@Table(name = "comments")
-public class Comment extends AuditModel {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
-
- @NotNull
- @Lob
- private String text;
-
- @ManyToOne(fetch = FetchType.LAZY, optional = false)
- @JoinColumn(name = "post_id", nullable = false)
- @OnDelete(action = OnDeleteAction.CASCADE)
- @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
- @JsonIdentityReference(alwaysAsId=true)
- @JsonProperty("post_id")
- private Post post;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getText() {
- return text;
- }
-
- public void setText(String text) {
- this.text = text;
- }
-
- public Post getPost() {
- return post;
- }
-
- public void setPost(Post post) {
- this.post = post;
- }
-}
diff --git a/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/Post.java b/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/Post.java
deleted file mode 100644
index 05f3461..0000000
--- a/jpa-one-to-many-demo/src/main/java/com/example/jpa/model/Post.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.example.jpa.model;
-
-import javax.persistence.*;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-/**
- * Created by rajeevkumarsingh on 21/11/17.
- */
-@Entity
-@Table(name = "posts")
-public class Post extends AuditModel {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
-
- @NotNull
- @Size(max = 100)
- @Column(unique = true)
- private String title;
-
- @NotNull
- @Size(max = 250)
- private String description;
-
- @NotNull
- @Lob
- private String content;
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getContent() {
- return content;
- }
-
- public void setContent(String content) {
- this.content = content;
- }
-}
diff --git a/jpa-one-to-many-demo/src/main/resources/META-INF/orm.xml b/jpa-one-to-many-demo/src/main/resources/META-INF/orm.xml
new file mode 100644
index 0000000..0a0b960
--- /dev/null
+++ b/jpa-one-to-many-demo/src/main/resources/META-INF/orm.xml
@@ -0,0 +1,17 @@
+
+
+
+ com.amit.jpa.model
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jpa-one-to-many-demo/src/main/resources/application.properties b/jpa-one-to-many-demo/src/main/resources/application.properties
index 1dae201..bf46ce4 100644
--- a/jpa-one-to-many-demo/src/main/resources/application.properties
+++ b/jpa-one-to-many-demo/src/main/resources/application.properties
@@ -1,15 +1,18 @@
# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url=jdbc:mysql://localhost:3306/jpa_one_to_many_demo?useSSL=false
spring.datasource.username=root
-spring.datasource.password=callicoder
+spring.datasource.password=root
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Hibernate
# The SQL dialect makes Hibernate generate better SQL for the chosen database
-spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.format_sql=true
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
-logging.level.org.hibernate.SQL=DEBUG
-logging.level.org.hibernate.type=TRACE
\ No newline at end of file
+#logging.level.org.hibernate.SQL=DEBUG
+#logging.level.org.hibernate.type=TRACE
\ No newline at end of file
diff --git a/jpa-one-to-many-demo/src/test/java/com/example/jpa/JpaOneToManyDemoApplicationTests.java b/jpa-one-to-many-demo/src/test/java/com/amit/jpa/JpaOneToManyDemoApplicationTests.java
similarity index 85%
rename from jpa-one-to-many-demo/src/test/java/com/example/jpa/JpaOneToManyDemoApplicationTests.java
rename to jpa-one-to-many-demo/src/test/java/com/amit/jpa/JpaOneToManyDemoApplicationTests.java
index ee4cfde..efd769d 100644
--- a/jpa-one-to-many-demo/src/test/java/com/example/jpa/JpaOneToManyDemoApplicationTests.java
+++ b/jpa-one-to-many-demo/src/test/java/com/amit/jpa/JpaOneToManyDemoApplicationTests.java
@@ -1,10 +1,14 @@
-package com.example.jpa;
+package com.amit.jpa;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-
+/**
+*
+* @author Amit Patil
+*
+**/
@RunWith(SpringRunner.class)
@SpringBootTest
public class JpaOneToManyDemoApplicationTests {
diff --git a/jpa-one-to-one-demo/Hibernate one to one mapping examle.postman_collection.json b/jpa-one-to-one-demo/Hibernate one to one mapping examle.postman_collection.json
new file mode 100644
index 0000000..b91605d
--- /dev/null
+++ b/jpa-one-to-one-demo/Hibernate one to one mapping examle.postman_collection.json
@@ -0,0 +1,234 @@
+{
+ "id": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "name": "Hibernate one to one mapping examle",
+ "description": "",
+ "order": [
+ "b170f4ea-e3f0-fbaa-51fa-9a1e9777118d",
+ "24b1fa01-f92d-c4e1-c915-85be4819146b",
+ "d8cbed58-b687-7ee4-08f0-b33a4233b6b1",
+ "76f5bc70-ab5e-512d-a4ad-de16007ebb6e",
+ "e0f51fb0-33ae-b787-7208-220ab953b0f0",
+ "17a7b55e-f15e-635e-5a90-b948b263e248",
+ "c246e38e-fa61-e509-2e60-9524566127b4"
+ ],
+ "folders": [],
+ "folders_order": [],
+ "timestamp": 1569653627690,
+ "owner": "2037757",
+ "public": false,
+ "requests": [
+ {
+ "id": "17a7b55e-f15e-635e-5a90-b948b263e248",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/userProfile/1",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "GET",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": null,
+ "dataMode": "params",
+ "name": "Retrieve single userProfile details",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569658918810,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {}
+ },
+ {
+ "id": "24b1fa01-f92d-c4e1-c915-85be4819146b",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/users",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "GET",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": null,
+ "dataMode": "params",
+ "name": "Retrieve all user details",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569653756579,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {}
+ },
+ {
+ "id": "76f5bc70-ab5e-512d-a4ad-de16007ebb6e",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/userProfile",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "POST",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": [],
+ "dataMode": "raw",
+ "name": "save new userProfile without actual user association",
+ "description": "user set to null reference",
+ "descriptionFormat": "html",
+ "time": 1569658739461,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "rawModeData": "{\n\t\t\"phoneNumber\": \"+91-7829190061\",\n\t\t\"gender\": \"MALE\",\n\t\t\"dateOfBirth\": \"2019-09-28\",\n\t\t\"address1\": \"address1 without user association\",\n\t\t\"address2\": \"some dummy adress2 \",\n\t\t\"street\": \"some dummy street\",\n\t\t\"city\": \"Bangalore\",\n\t\t\"state\": \"Karnataka\",\n\t\t\"country\": \"India\",\n\t\t\"zipCode\": \"560100\",\n\t\t\"user\": null\n}"
+ },
+ {
+ "id": "b170f4ea-e3f0-fbaa-51fa-9a1e9777118d",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/user",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "POST",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": [],
+ "dataMode": "raw",
+ "name": "Create user details",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569653662501,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "rawModeData": "{\n\t\"id\": \"\",\n\t\"firstName\": \"Ranjit\",\n\t\"lastName\": \"Patil\",\n\t\"email\": \"Ranjit@gmail.com\",\n\t\"password\": \"pass123\",\n\t\"userProfile\": {\n\t\t\"id\": \"\",\n\t\t\"phoneNumber\": \"+91-7829190061\",\n\t\t\"gender\": \"MALE\",\n\t\t\"dateOfBirth\": \"2019-09-28\",\n\t\t\"address1\": \"some dummy address1 about my residence\",\n\t\t\"address2\": \"some dummy adress2 \",\n\t\t\"street\": \"some dummy street\",\n\t\t\"city\": \"Bangalore\",\n\t\t\"state\": \"Karnataka\",\n\t\t\"country\": \"India\",\n\t\t\"zipCode\": \"560100\"\n\t}\n}"
+ },
+ {
+ "id": "c246e38e-fa61-e509-2e60-9524566127b4",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/userProfiles",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "GET",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": null,
+ "dataMode": "params",
+ "name": "Retrieve All the userProfiles details",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569658935643,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {}
+ },
+ {
+ "id": "d8cbed58-b687-7ee4-08f0-b33a4233b6b1",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/user/1",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "GET",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": null,
+ "dataMode": "params",
+ "name": "Retrieve single user details",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1569655016616,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {}
+ },
+ {
+ "id": "e0f51fb0-33ae-b787-7208-220ab953b0f0",
+ "headers": "Content-Type: application/json\n",
+ "headerData": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": "",
+ "enabled": true
+ }
+ ],
+ "url": "localhost:8080/v1/userProfile",
+ "queryParams": [],
+ "pathVariables": {},
+ "pathVariableData": [],
+ "preRequestScript": null,
+ "method": "POST",
+ "collectionId": "4df5465b-c7ea-7975-1123-2b3f2ed0f5c7",
+ "data": [],
+ "dataMode": "raw",
+ "name": "save new userProfile with invalid user association",
+ "description": "user details set to empty object",
+ "descriptionFormat": "html",
+ "time": 1569658813570,
+ "version": 2,
+ "responses": [],
+ "tests": null,
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "rawModeData": "{\n\t\t\"phoneNumber\": \"+91-7829190061\",\n\t\t\"gender\": \"MALE\",\n\t\t\"dateOfBirth\": \"2019-09-28\",\n\t\t\"address1\": \"address1 without user association\",\n\t\t\"address2\": \"some dummy adress2 \",\n\t\t\"street\": \"some dummy street\",\n\t\t\"city\": \"Bangalore\",\n\t\t\"state\": \"Karnataka\",\n\t\t\"country\": \"India\",\n\t\t\"zipCode\": \"560100\",\n\t\t\"user\": {}\n}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/jpa-one-to-one-demo/pom.xml b/jpa-one-to-one-demo/pom.xml
index 212d569..d9f5874 100644
--- a/jpa-one-to-one-demo/pom.xml
+++ b/jpa-one-to-one-demo/pom.xml
@@ -1,5 +1,6 @@
-
4.0.0
@@ -15,7 +16,7 @@
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
-
+
@@ -38,7 +39,15 @@
mysql
mysql-connector-java
runtime
+ 8.0.13
+
+
+ org.hibernate
+ hibernate-core
+ 5.3.1.Final
+
+
org.springframework.boot
spring-boot-starter-test
diff --git a/jpa-one-to-one-demo/src/main/java/com/amit/jpa/JpaOneToOneDemoApplication.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/JpaOneToOneDemoApplication.java
new file mode 100644
index 0000000..b780725
--- /dev/null
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/JpaOneToOneDemoApplication.java
@@ -0,0 +1,16 @@
+package com.amit.jpa;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+/**
+*
+* @author Amit Patil
+*
+**/
+@SpringBootApplication
+public class JpaOneToOneDemoApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(JpaOneToOneDemoApplication.class, args);
+ }
+}
diff --git a/jpa-one-to-one-demo/src/main/java/com/amit/jpa/app/configuration/AppConfiguration.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/app/configuration/AppConfiguration.java
new file mode 100644
index 0000000..6479094
--- /dev/null
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/app/configuration/AppConfiguration.java
@@ -0,0 +1,20 @@
+package com.amit.jpa.app.configuration;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.amit.jpa.service.AppService;
+
+/**
+*
+* @author Amit Patil
+*
+**/
+@Configuration
+public class AppConfiguration {
+
+ @Bean
+ public AppService appService() {
+ return new AppService();
+ }
+}
diff --git a/jpa-one-to-one-demo/src/main/java/com/amit/jpa/app/controllers/AppController.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/app/controllers/AppController.java
new file mode 100644
index 0000000..297fbb9
--- /dev/null
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/app/controllers/AppController.java
@@ -0,0 +1,58 @@
+package com.amit.jpa.app.controllers;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.amit.jpa.model.User;
+import com.amit.jpa.model.UserProfile;
+import com.amit.jpa.service.AppService;
+
+/**
+*
+* @author Amit Patil
+*
+**/
+@RestController
+@RequestMapping("/v1")
+public class AppController {
+
+ @Autowired
+ private AppService appService;
+
+ @RequestMapping(value = "/user", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public User saveUserDetails(@RequestBody User user) {
+ return appService.saveUserDetails(user);
+ }
+
+ @RequestMapping(value = "/user/{userId}", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public User getUserDetailsById(@PathVariable("userId") Long id) {
+ return appService.getUserDetailsById(id);
+ }
+
+ @RequestMapping(value = "/users", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public List getAllUserDetails() {
+ return appService.getAllUserDetails();
+ }
+
+ @RequestMapping(value = "/userProfile", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public UserProfile saveUserProfileDetails(@RequestBody UserProfile userProfile) {
+ return appService.saveUserProfile(userProfile);
+ }
+
+ @RequestMapping(value = "/userProfile/{userProfileId}", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public UserProfile getUserProfileDetails(@PathVariable("userProfileId") Long id) {
+ return appService.getUserProfileDetails(id);
+ }
+
+ @RequestMapping(value = "/userProfiles", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+ public List getAllUserProfiles() {
+ return appService.getAllUserProfileDetails();
+ }
+}
diff --git a/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/Gender.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/Gender.java
new file mode 100644
index 0000000..aa847b9
--- /dev/null
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/Gender.java
@@ -0,0 +1,11 @@
+package com.amit.jpa.model;
+
+/**
+*
+* @author Amit Patil
+*
+**/
+public enum Gender {
+ MALE,
+ FEMALE
+}
diff --git a/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/User.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/User.java
similarity index 87%
rename from jpa-one-to-one-demo/src/main/java/com/example/jpa/model/User.java
rename to jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/User.java
index f41fc36..2a67681 100644
--- a/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/User.java
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/User.java
@@ -1,18 +1,28 @@
-package com.example.jpa.model;
+package com.amit.jpa.model;
import javax.persistence.*;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
+
+import com.fasterxml.jackson.annotation.JsonManagedReference;
+
import java.io.Serializable;
/**
- * Created by rajeevkumarsingh on 20/11/17.
- */
+*
+* @author Amit Patil
+*
+**/
@Entity
@Table(name = "users")
public class User implements Serializable {
- @Id
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7529424835544174898L;
+
+ @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@@ -35,9 +45,10 @@ public class User implements Serializable {
@Size(max = 128)
private String password;
+ @JsonManagedReference
@OneToOne(fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
- mappedBy = "user")
+ mappedBy = "user", orphanRemoval = true)
private UserProfile userProfile;
// Hibernate requires a no-arg constructor
diff --git a/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/UserProfile.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/UserProfile.java
similarity index 93%
rename from jpa-one-to-one-demo/src/main/java/com/example/jpa/model/UserProfile.java
rename to jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/UserProfile.java
index 099a759..3d45560 100644
--- a/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/UserProfile.java
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/model/UserProfile.java
@@ -1,17 +1,27 @@
-package com.example.jpa.model;
+package com.amit.jpa.model;
import javax.persistence.*;
import javax.validation.constraints.Size;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+
import java.io.Serializable;
import java.util.Date;
/**
- * Created by rajeevkumarsingh on 20/11/17.
- */
+*
+* @author Amit Patil
+*
+**/
@Entity
@Table(name = "user_profiles")
public class UserProfile implements Serializable {
- @Id
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3960703238763006209L;
+
+ @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@@ -49,6 +59,7 @@ public class UserProfile implements Serializable {
@Size(max = 32)
private String zipCode;
+ @JsonBackReference
@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
private User user;
diff --git a/jpa-one-to-one-demo/src/main/java/com/example/jpa/repository/UserProfileRepository.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/repository/UserProfileRepository.java
similarity index 63%
rename from jpa-one-to-one-demo/src/main/java/com/example/jpa/repository/UserProfileRepository.java
rename to jpa-one-to-one-demo/src/main/java/com/amit/jpa/repository/UserProfileRepository.java
index 1051f8a..3df4b57 100644
--- a/jpa-one-to-one-demo/src/main/java/com/example/jpa/repository/UserProfileRepository.java
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/repository/UserProfileRepository.java
@@ -1,12 +1,15 @@
-package com.example.jpa.repository;
+package com.amit.jpa.repository;
-import com.example.jpa.model.UserProfile;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+import com.amit.jpa.model.UserProfile;
+
/**
- * Created by rajeevkumarsingh on 20/11/17.
- */
+*
+* @author Amit Patil
+*
+**/
@Repository
public interface UserProfileRepository extends JpaRepository {
diff --git a/jpa-one-to-one-demo/src/main/java/com/example/jpa/repository/UserRepository.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/repository/UserRepository.java
similarity index 62%
rename from jpa-one-to-one-demo/src/main/java/com/example/jpa/repository/UserRepository.java
rename to jpa-one-to-one-demo/src/main/java/com/amit/jpa/repository/UserRepository.java
index fba1c91..fe22066 100644
--- a/jpa-one-to-one-demo/src/main/java/com/example/jpa/repository/UserRepository.java
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/repository/UserRepository.java
@@ -1,12 +1,15 @@
-package com.example.jpa.repository;
+package com.amit.jpa.repository;
-import com.example.jpa.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+import com.amit.jpa.model.User;
+
/**
- * Created by rajeevkumarsingh on 20/11/17.
- */
+*
+* @author Amit Patil
+*
+**/
@Repository
public interface UserRepository extends JpaRepository {
diff --git a/jpa-one-to-one-demo/src/main/java/com/amit/jpa/service/AppService.java b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/service/AppService.java
new file mode 100644
index 0000000..a302f37
--- /dev/null
+++ b/jpa-one-to-one-demo/src/main/java/com/amit/jpa/service/AppService.java
@@ -0,0 +1,49 @@
+package com.amit.jpa.service;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.amit.jpa.model.User;
+import com.amit.jpa.model.UserProfile;
+import com.amit.jpa.repository.UserProfileRepository;
+import com.amit.jpa.repository.UserRepository;
+
+/**
+*
+* @author Amit Patil
+*
+**/
+public class AppService {
+
+ @Autowired
+ private UserRepository userRepository;
+
+ @Autowired
+ private UserProfileRepository userProfileRepository;
+
+ public User saveUserDetails(User user) {
+ return userRepository.save(user);
+ }
+
+ public User getUserDetailsById(Long id) {
+ return userRepository.findById(id).get();
+ }
+
+ public List getAllUserDetails() {
+ return userRepository.findAll();
+ }
+
+ public UserProfile saveUserProfile(UserProfile userProfile) {
+ return userProfileRepository.save(userProfile);
+ }
+
+ public UserProfile getUserProfileDetails(Long id) {
+ return userProfileRepository.findById(id).get();
+ }
+
+ public List getAllUserProfileDetails() {
+ return userProfileRepository.findAll();
+ }
+}
+
\ No newline at end of file
diff --git a/jpa-one-to-one-demo/src/main/java/com/example/jpa/JpaOneToOneDemoApplication.java b/jpa-one-to-one-demo/src/main/java/com/example/jpa/JpaOneToOneDemoApplication.java
deleted file mode 100644
index 72de4c6..0000000
--- a/jpa-one-to-one-demo/src/main/java/com/example/jpa/JpaOneToOneDemoApplication.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.example.jpa;
-
-import com.example.jpa.model.Gender;
-import com.example.jpa.model.User;
-import com.example.jpa.model.UserProfile;
-import com.example.jpa.repository.UserRepository;
-import com.example.jpa.repository.UserProfileRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import java.util.Calendar;
-
-@SpringBootApplication
-public class JpaOneToOneDemoApplication implements CommandLineRunner {
-
- @Autowired
- private UserRepository userRepository;
-
- @Autowired
- private UserProfileRepository userProfileRepository;
-
- public static void main(String[] args) {
- SpringApplication.run(JpaOneToOneDemoApplication.class, args);
- }
-
- @Override
- public void run(String... args) throws Exception {
- // Clean up database tables
- userProfileRepository.deleteAllInBatch();
- userRepository.deleteAllInBatch();
-
- //=========================================
-
- // Create a User instance
- User user = new User("Rajeev", "Singh", "rajeev@callicoder.com",
- "MY_SUPER_SECRET_PASSWORD");
-
- Calendar dateOfBirth = Calendar.getInstance();
- dateOfBirth.set(1992, 7, 21);
-
- // Create a UserProfile instance
- UserProfile userProfile = new UserProfile("+91-8197882053", Gender.MALE, dateOfBirth.getTime(),
- "747", "2nd Cross", "Golf View Road, Kodihalli", "Bangalore",
- "Karnataka", "India", "560008");
-
-
- // Set child reference(userProfile) in parent entity(user)
- user.setUserProfile(userProfile);
-
- // Set parent reference(user) in child entity(userProfile)
- userProfile.setUser(user);
-
- // Save Parent Reference (which will save the child as well)
- userRepository.save(user);
-
- //=========================================
- }
-
-
-}
diff --git a/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/Gender.java b/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/Gender.java
deleted file mode 100644
index e77317f..0000000
--- a/jpa-one-to-one-demo/src/main/java/com/example/jpa/model/Gender.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.example.jpa.model;
-
-/**
- * Created by rajeevkumarsingh on 29/11/17.
- */
-public enum Gender {
- MALE,
- FEMALE
-}
diff --git a/jpa-one-to-one-demo/src/main/resources/application.properties b/jpa-one-to-one-demo/src/main/resources/application.properties
index 549e2fb..93e3d28 100644
--- a/jpa-one-to-one-demo/src/main/resources/application.properties
+++ b/jpa-one-to-one-demo/src/main/resources/application.properties
@@ -1,15 +1,15 @@
# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url=jdbc:mysql://localhost:3306/jpa_one_to_one_demo?useSSL=false
spring.datasource.username=root
-spring.datasource.password=callicoder
-
+spring.datasource.password=root
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Hibernate
# The SQL dialect makes Hibernate generate better SQL for the chosen database
-spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
-logging.level.org.hibernate.SQL=DEBUG
-logging.level.org.hibernate.type=TRACE
\ No newline at end of file
+#logging.level.org.hibernate.SQL=DEBUG
+#logging.level.org.hibernate.type=TRACE
\ No newline at end of file