Spring Data has made it so easy to deal with database. Most boiler plate code are removed and user can just concentrate on the business logic.
Here is a simple way to delete records using multiple field values from a relational database table .
STEP 1:
- Prepare your entity which corresponds to the table.
- Write a named query on top of the entity class as shown below
@Entity @NamedQuery(name="YourEntity.deleteByField1andField2" , query="delete from YourEntity y where y.field1 = ?1 and y.field2 = ?2") public class YourEntity extends Serializable{ @Id private long id; @Column(name="FIELD1") private String field1; @Column(name="FIELD2") private String field2; ... }
STEP 2:
- Prepare your repository by extending CrudRepository provided by spring data
- Declare an abstract method using the same name as the named query used in the entity
- Mark the method as @Transactional
- Mark the method as @Modifying
- Return only void :
public class YourRepository extends CrudRepository<YourEntity,long>{ @Transactional @Modifying void deleteByField1andField2(String field1, String field2); }
STEP 3:
Finally in the client code invoke the repository method :
@Component public class Client{ @Autowired private YourRepository repository; public void deleteRecord(final String field1Value,final String field2Value){ this.repository.deleteByField1andField2(field1Value,field2Value); } }