Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IntelliJ IDEA persistence support for Spring Boot project

I try to create a Spring Boot 2 project with JPA to access a MySQL database using Hibernate. I have created a Gradle project on http://start.spring.io/ with JPA and MySQL dependency and imported into IntelliJ IDEA 2017.1 Ultimate

By default the persistence tool window is not present. I have searched for solution and found many different answer and know I'm a bit confused how should I configure my project. What is the correct way to do it?

  1. What framework support should I add to my project?

    • Spring Data JPA
    • Hibernate
    • JPA
  2. How should I add them?

    • Right click on my module and "Add Framework Support" (I can select Spring Data JPA and Hibernate here)
    • Project Structure -> Facets -> Add (I can select Hibernate and JPA here)
  3. If my project name is db and I have the db_main and db_test modules then to which one should I attach the Facet?

    • db
    • db_main

At the moment I added JPA Facet with Hibernate provider and added the persistence.xml. So I have the Persistence window.

However if I try to generate entities I select the datasource, the tables, the package but nothing happens. I mean no error message just the window closes as if it would be succeeded but there is no changes in the xml and no entity was generated.

like image 965
Vmxes Avatar asked Oct 23 '17 14:10

Vmxes


People also ask

Does IntelliJ IDEA support Spring Boot?

IntelliJ IDEA creates a Spring Boot run configuration that you can use to run your new Spring application. If the run configuration is selected, press Shift+F10 .

How do I enable persistence in IntelliJ?

Right-click a module or a persistence unit, point to Generate Persistence Mapping and select By Database Schema. Select the source and output options and click OK.

What is Spring Boot persistence?

Persistence: It is a class that contains static methods to obtain an EntityManagerFactory instance. EntityManagerFactory: It is a factory class of EntityManager. It creates and manages multiple instances of EntityManager. EntityManager: It is an interface. It controls the persistence operations on objects.


1 Answers

After trying a lot of solutions found on the web here is what worked for me. I hope this helps someone.

I use IntelliJ IDEA 2017.1 Ultimate

Step 1.

I have created a Spring Boot (2.0.0 M5) project using Gradle with the built in wizard and select Web, JPA and MySQL dependencies. enter image description here

This gives you a very simple project structure but the Persistence tool is not available: enter image description here

Step 2.

Add JPA to Facets in Project Structure window to the main module and set Default JPA Provider to Hibernate.

Note that no descriptor was added.

enter image description here

As result the Persistence tool window is now available and it automatically contains Entities as Persistence Unit.

enter image description here

Step 3.

In the Database Tool window, add new DataSource to your project and also set datasource properties in the application.properties file.

enter image description here

Step 4.

In the Persistence tool window right click on Entities and select Generate Persistence Mapping and By Database Schema

enter image description here

Now you can select for which tables you want to generate an entity:

enter image description here

IDEA will generate the entity classes for you.

enter image description here

Step 5.

At this point if you open the JPA console and write your HQL or JPL query it will fail. You need to rebuild your project before using the console.

enter image description here

like image 144
Vmxes Avatar answered Oct 20 '22 03:10

Vmxes