In Spring data jpa, how to use external sql file having multiple queries in @Query annotation

65 views Asked by At

I have a requirement to delete an entity, let's say, main_entity and this entity has many dependent entities. So, I need to perform deletion in this manner:

delete from dependent_entity_1 where main_entity_id IN :entity_ids;
delete from dependent_entity_2 where main_entity_id IN :entity_ids;
delete from dependent_entity_3 where main_entity_id IN :entity_ids;
delete from dependent_entity_4 where main_entity_id IN :entity_ids;
delete from main_entity where id IN ::entity_ids;

Since, there are a lot of dependent entities, I want to put the deletion query in a separate file instead of hard-coding inside the repository class.

I tried using named query as mentioned here: How to refer long query, written in external file, in Spring data jpa @Query

The properties file look like this:

MainEntity.deleteEntities=delete from dependent_entity_1 where main_entity_id IN :entity_id;\
delete from dependent_entity_2 where main_entity_id IN :entity_id;\
delete from dependent_entity_3 where main_entity_id IN :entity_id;\
delete from dependent_entity_4 where main_entity_id IN :entity_id;\
delete from main_entity where id IN ::entity_id;\

It is working for a single query but for multiple queries it is giving an exception: Named parameter not bound :entity_ids;

So, it might not support executing multiple queries.

Is there any way to do this or am I doing anything incorrectly here?

0

There are 0 answers