This tutorial walks you through the process of mapping a Hibernate many-to-many extra columns relationship with Spring Boot, Spring Data JPA and HSQL
What you'll need
- JDK 1.7 or later
- Maven 3 or later
- Spring Data JPA
- Spring Boot
Init project structure and dependencies
├── src │ └── main │ ├── java │ │ └── com │ │ └── hellokoding │ │ └── jpa │ │ ├── model │ │ │ ├── Book.java │ │ │ ├── BookPublisher.java | | | └── Publisher.java │ │ ├── repository | | | ├── BookRepository.java │ │ │ └── PublisherRepository.java │ │ └── HelloJpaApplication.java │ └──resources │ └── application.properties └── pom.xml
Define JPA Entities and Repositories
publisher tables have a many-to-many relationship via
Define JPA Entities
JPA Entity is defined with
@Entity annotation, represent a table in your database.
@Table maps the entity with the table. If no
@Table is defined, the default value is used: the class name of the entity.
@Id declares the identifier property of the entity.
@Column maps the entity's field with the table's column. If
@Column is omitted, the default value is used: the field name of the entity.
@ManyToOne defines a many-to-one relationship between 2 entities.
@JoinColumn indicates the entity is the owner of the relationship: the corresponding table has a column with a foreign key to the referenced table.
mappedBy indicates the entity is the inverse of the relationship.
Spring Data JPA Repository
Spring Data JPA contains some built-in
Repository implemented some common functions to work with database:
save,...All we need for this example is extend it.
Define properties and run the application
Run the application
You can run the application using
mvn spring-boot:run and check the result in the console log