Billing System using Spring Boot Generic JpaRepository fix and Generic Code Generator

Generic JpaRepository object

Welcome back, friends. In this article, we will be going to see how to create a Generic code generator for all tables in the Billing System and I was facing an error while auto-wiring JPARepository in BillingBaseService. Let see these two updates part of this Story. Also the same story I have posted as YouTube Video , if you want to watch the video, please click the YouTube video link below.
https://youtu.be/0Uoa2Wpnp-0
In BillingBaseService I had declared repository object like below

It was working fine and able to do CRUD Operation, I mean, I am able to do Customer, Employee, and Vendor registration. When I start adding EmploeeYRepository and another repository which extends from JpaRepository, BillingBaseService stopped working.
It was giving like this error:

Spring Boot was saying that to fix this error, you need to use @Primary or @Qualifier Annotation.
I have tried with @Primary Annotation. I have added the @Priamry annotation in EmploeeRepository then the issue was fixed. Through this fix, I understand that when I create multiple Repository classes using JpaRepository, it creates one bean reference and that reference uses in all repository interface. and I am using the same JpaRepository reference in BillingBaseService so, Spring boot doesn’t know where need to keep the JpaRepository reference so it throws the error. After using @Primary Annotation, the issue is fixed. This is my assumption. Anyone can explain why it fixed.

I am not satisfied with this fix. so I have come up with the following way to fix it. I have created a Generic Repository class mentioned below and I declared that Repository type in BillingBaseService. After doing this, the error was fixed. Now I am totally satisfied with this fix.

This is the first update.

Now we will be going to check Generic code generate. If we want to create a Unique code for across the system tables. there are many inbuilt ways to do in Hibernate but I don’t like those ways. I wanted to use my own logic and I would like to keep it simple.

I have created a simple table called “app_entity_code”. The table structure is below.

This table maintain the all unique code. As of now, we need to generate Employee code, Customer code, and Vendor code. I am planning to store all unique codes in this table. It is a very simple table, it has the “code” column and “code_type” column. the Code has actual code that generated by the system and code_type says that what is the Code type for the code whether it is employee code or vendor code or customer code.

The following Code is to generate the code based on the parameter we are sending.

If we send “EMPLOYEE_CODE”, it generates the code and store the code in app_entity_code and store this code type as Employee code like below

Whenever registration has happened, if the registration is employee, the EMPLOYEE_CODE passed as a parameter in the “newCode(String codeType)” method and generates a unique code and store it to app_entity_code. Then, assign newly generated code to employee record that currently creating. In this way, I can reuse this method for all the tables in the system.

Soon I will come up with good updates on the Billing System.

The same story I have posted as YouTube Video. Please watch this full video and share this channel with who wanted to learn how to implement a real-time project using Spring Boot.
https://youtu.be/0Uoa2Wpnp-0
The latest code I have updated in following GitHub Repository. Pull the code and try to set up in your local System. Good Luck. Until then bye bye from Suresh
https://github.com/sureshstalin/billingsystem
S.Suresh
http://www.pinepad.in

--

--

I am a Java / J2EE Consultant. Happy to learn. https://pinepad.in/blog/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store